开发者社区> 游贤明> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

使用 STHTTPRequest 框架解析 Soap1.2 教程

简介:
+关注继续查看

1.STHTTPRequest框架地址

https://github.com/nst/STHTTPRequest

将 STHTTPRequest .h  STHTTPRequest.m 文件拖入工程中引入头文件即可

 

2.Ono框架(解析XML用)

https://github.com/mattt/Ono

将 Ono 文件夹拖入到工程中引入头文件,链接到 libxml2.dylib ,在 Header Search Path 中 添加 /usr/include/libxml2

 

   -------------------------------------------------------------------------------------------------------

   以下是 SOAP 1.2 请求和响应示例。所显示的占位符需替换为实际值。

http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?op=getMobileCodeInfo

POST /WebServices/MobileCodeWS.asmx HTTP/1.1
Host: webservice.webxml.com.cn
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <getMobileCodeInfo xmlns="http://WebXml.com.cn/">
      <mobileCode>string</mobileCode>
      <userID>string</userID>
    </getMobileCodeInfo>
  </soap12:Body>
</soap12:Envelope>

---------------------------------------------------------------------------------------------


//前期信息的准备
    //请将XXXXXXXXXXX换成自己的电话号码,否则请求会失败
    NSString *msgLength = [NSString stringWithFormat:@"%d",[@"XXXXXXXXXXX" length]];
    NSString *serviceAddress = @"http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx";
    NSString *soapMsg = [NSString stringWithFormat:
                         @"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
                         "<soap12:Envelope "
                         "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
                         "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" "
                         "xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">"
                         "<soap12:Body>"
                         "<getMobileCodeInfo xmlns=\"http://WebXml.com.cn/\">"
                         "<mobileCode>%@</mobileCode>"
                         "<userID>%@</userID>"
                         "</getMobileCodeInfo>"
                         "</soap12:Body>"
                         "</soap12:Envelope>", @"XXXXXXXXXXX", @""];
    NSMutableDictionary *requestHeadersDic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
                                              @"application/soap+xml; charset=utf-8", @"Content-Type" ,
                                              msgLength, @"Content-Length",
                                              nil];
    
    //组织请求内容
    STHTTPRequest *request = [STHTTPRequest requestWithURLString:serviceAddress];
    request.HTTPMethod = @"POST";
    request.requestHeaders = requestHeadersDic;
    request.rawPOSTData = [soapMsg dataUsingEncoding:NSUTF8StringEncoding];

    //注册block回调
    request.completionBlock = ^(NSDictionary *headers, NSString *body) {
        NSLog(@"%@", headers);
    };
    request.errorBlock = ^(NSError *error) {
        NSLog(@"%@", error);
    };
    request.downloadProgressBlock = ^(NSData *data, NSInteger totalBytesReceived, NSInteger totalBytesExpectedToReceive) {
        NSLog(@"%ld", (long)totalBytesReceived);
    };
    request.completionDataBlock = ^(NSDictionary *headers, NSData *body) {
        ONOXMLDocument *document = [ONOXMLDocument XMLDocumentWithData:body error:nil];
        NSLog(@"%@", document);
    };
    
    //开始异步请求
    [request startAsynchronous];

分析:
请求分为3个部分:
1.请求的地址 http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx ,此部分会被Request自动解析出 Host Post 地址
2.请求的头部 Content-Type Content-Length
3.请求的实体 (转换成了二进制文件)
4.得到的数据进行 XML 或者 JSON 解析


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
QueryWarpper的使用方法,MyBatics Plus的查询方法处理
QueryWarpper的使用方法,MyBatics Plus的查询方法处理
75 0
【SSM框架】MyBatis核心配置文件详解
1.MyBatis核心配置文件之environments 2.MyBatis核心配置文件之properties 3.MyBatis核心配置文件之typeAliases 4.MyBatis核心配置文件之mappers
43 0
SSM框架整合—详细整合教程(Spring+SpringMVC+MyBatis)
SSM框架整合—详细整合教程(Spring+SpringMVC+MyBatis)
52 0
【Swift4】(8) 简单使用Storyboard | 上手练习一个小app | 跑个流程
【Swift4】(8) 简单使用Storyboard | 上手练习一个小app | 跑个流程
48 0
Spring之RequestBody的使用姿势小结
SpringMVC中处理请求参数有好几种不同的方式,如我们常见的下面几种 根据 HttpServletRequest 对象获取 根据 @PathVariable 注解获取url参数 根据 @RequestParam 注解获取请求参数 根据Bean的方式获取请求参数 根据 @ModelAttribute 注解获取请求参数
161 0
C3P0Util 的制作 及DButils 中的 QueryRunner 类的使用
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kese7952/article/details/81428498 C3P0Util...
865 0
通过minicom传送文件的相关配置及使用方法
写一下我使用串口向开发板传送文件中遇到的问题及解决办法: 使用的软硬件环境: 虚拟机:VMware® Workstation 8.0.1 Linux操作系统:Fedora 9 开发板:mini6410   下面使用通过串口终端minicom传送文件到开发板上: 1. USB 串口无法识别的问题: 我的笔记本没有RS232接口,只好用USB转串口,再通过开发板配套的一根交叉串口线连接到开发板上。
892 0
【ASP.NET Web API教程】2.3 与实体框架一起使用Web API
原文:【ASP.NET Web API教程】2.3 与实体框架一起使用Web API 2.3 Using Web API with Entity Framework 2.3 与实体框架一起使用Web API 本小节是ASP.NET Web API第2章的第3小节,原文共分为7个部分,分成了7篇文章,故这里也分为7个帖子贴出,以下是本小节的第1部分 — 译者注。
1225 0
SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/63252941  SSM框架—...
1733 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载