SOAP web service用AFNetWorking实现请求

问:

This is my current call to (asmx) SOAP web service:

NSString *soapMessage =
    [NSString stringWithFormat:
     @"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
     "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
     "<soap:Body>"
     "<Save xmlns=\"http://www.myapp.com/\">"
     "<par1>%i</par1>"
     "<par2>%@</par2>"
     "<par3>%@</par3>"
     "</Save>"
     "</soap:Body>"
     "</soap:Envelope>", par1, par2, par3
     ];
NSURL *url = [NSURL URLWithString:@"http://....asmx"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

    NSString *msgLength = [NSString stringWithFormat:@"%lu", (unsigned long)[soapMessage length]];

    [request addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [request addValue: msgLength forHTTPHeaderField:@"Content-Length"];

    [request setHTTPMethod:@"POST"];
    [request setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.responseSerializer = [AFXMLParserResponseSerializer serializer];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
        if([self.delegate respondsToSelector:@selector(myAppHTTPClientDelegate:didUpdateWithWeather:)]){
            [self.delegate myAppHTTPClientDelegate:self didUpdateWithWeather:responseObject];
        }
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        if([self.delegate respondsToSelector:@selector(myAppHTTPClientDelegate:self:didFailWithError:)]){
            [self.delegate myAppHTTPClientDelegate:self didFailWithError:error];
        }
    }];

    [operation start];

But I need to change this to use AFHTTPSessionManager.

I suppose that I need to use this:


UPDATE
NSDictionary *s_request = @{@"par1": [NSString stringWithFormat:@"%i", par1], @"par2": par2, @"par3": par3, @"par4": [NSString stringWithFormat:@"%i", par4], @"par5": par5};

    AFHTTPSessionManager* s_manager = [[AFHTTPSessionManager alloc] init];

    [s_manager POST:@"http://192.168.10.26/mywebservice/myservice.asmx?op=MethodName" parameters:s_request success:^(NSURLSessionDataTask *task, id responseObject) {
        NSLog(@"DONE!");
    } failure:^(NSURLSessionDataTask *task, NSError *error) {
        NSLog(@"FAILED %@, %@", [error localizedDescription], [error localizedFailureReason]);
    }];

This code always fail. Getting error 500. Do I just need to add method URL or I need to add complete soap message somewhere. What I miss here?

答:

You need to pass parameter in Dictionary like in the following example:

NSDictionary *request = @{@"email": self.email.text, @"password": self.password.text};
[manager POST:login parameters:request success:^(AFHTTPRequestOperation *operation, id responseObject) {
  NSLog(@"DONE!");
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Failed to log in: %@", operation.responseString);
}];
时间: 2024-08-26 05:25:58

SOAP web service用AFNetWorking实现请求的相关文章

REST和SOAP Web Service的区别比较

本文转载自他人的博客,ArcGIS Server 推出了 对 SOAP 和 REST两种接口(用接口类型也许并不准确)类型的支持,本文非常清晰的比较了SOAP和Rest的区别联系! ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////REST似乎在一夜间兴起了,这可能引起一些争议,反对者可以说REST是

SOAP/Web Service/WSDL关系

转载----------------------------------------------- 最近看了xml schema,xpah,和xslt的相关内容,感觉wsdl就是一个soap的schema,一个soap就是一个wsdl的实例,实际上wsdl就是整个webservice的schema. 从这个角度看,要学好soap,不如从xml schema开始,然后转到wsdl的学习,这样webservice就没有其他理论上的东西可学了.就剩下类库内的函数如何使用的问题了. 对SOAP/Web

翻译-使用Spring调用SOAP Web Service

原文链接: http://spring.io/guides/gs/consuming-web-service/ 调用SOAP web service 本指南将指导你使用Spring调用一个基于SOAP的web service的整个过程. 指南内容 你将构建一个客户端,使用SOAP用来从远端的基于WSDL的web service获取天气数据.请访问http://wiki.cdyne.com/index.php/CDYNE_Weather进一步获取该天气服务的信息. 该服务根据邮编返回天气预测.你可

翻译-使用Spring WebService生成SOAP Web Service

原文链接:http://spring.io/guides/gs/producing-web-service/ 生成SOAP web service 该指南将带领你使用Spring创建一个基于SOAP的web service的整个过程. 指南内容 你将创建一个服务,该服务通过一个基于WSDL的SOAP web service向外暴露欧洲国家的数据. 注意:为了简化该示例,你将使用硬编码方式嵌入英国,西班牙及波兰. 准备事项 15分钟 喜爱的编辑器或IDE JDK1.6或更高版本 Gradle 1.

(转)白痴理解的SOAP/Web Service/WSDL关系

以前也曾经写过简单的WebService,但是并没有深入的研究,这两天看了园子里的一些文章,又请教了身边的高人,把SOAP.Web Service和WSDL的关系大概搞明白了,举例说明如下: X局有两个副局长A和B,A副局长分管财务,B副局长分管计划生育,但是A副局长是上海人,B副局长是 广东人,两个人又都只会说自己家乡的方言,不会说普通话,这让下面的工作人员在请示汇报的时候非常困难,为了解决这个问题,局里的科员小c发明了一个表 格,表格列出了需要向局长请示的问题以及说明这个问题所需要的数据等等

Spring Boot调用SOAP Web Service

Spring Boot项目中,调用遗留的SOAP Web Service,方法很简单,仅需引入spring-boot-starter-web-services. <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web-services</artifactId> </dependency> WebServic

如何在symfony 控制器里面创建soap web service

通过一些工具将一个控制器设置成一个soap服务将会非常简单.首先,你必须安装了php soap扩展.由于php soap扩展现在不能生成wsdl,你要么自己从头开始创建要模使用第三方生成器. php中有一些可以使用的soap服务接口.Zend SOAP 和 NuSOAP就是其中两个.尽管php soap扩展在这些例子中被使用,通用的思想还是可以被用在其他应用接口. SOAP 的工作是通过暴露PHP对象给外部实体的(使用soap服务的人).首先,创建一个Helloservice类-表示你将在你的s

SAP PI 配置soap web service

1.下载,启动ESB(Enterprise Services Builder) 2.找到对应的软件组件以及对应的命名空间: 3.选择对应的命名空间,右键新建文件夹: 点击创建,保存,文件夹对象右键激活 4.文件夹上右键新建数据类型:两个 因为这里只有几个字段,所有没必要在额外增加结构层次,保存,激活 保存激活. 5.文件夹右键新建消息类型:两个 保存激活 保存激活 原文地址:https://www.cnblogs.com/sapSB/p/12165653.html

建立自己的Web service(SOAP篇)

1.简介 这篇文章主要介绍采用SOAP来建立以及访问Web service接口. Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式的互操作的应用程序. Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成.依据Web Service规范实施的应用之间, 无论它们所使用的语