基于 SOAP1.2(简单对象访问协议)进行网络请求

什么是 SOAP(Simple Object Access Protocol)

简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。

 AFHTTPSessionManager *manager =  [[AFHTTPSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
 
    //因为返回的不是标准的 XML 或者 JSON 格式,所以用 AFHTTPRequestSerializer
    AFHTTPRequestSerializer *serializer = [AFHTTPRequestSerializer serializer];
    manager.requestSerializer = serializer;
    
    //缓存策略
    serializer.cachePolicy = NSURLRequestUseProtocolCachePolicy;
    serializer.timeoutInterval = 30.0f;
    
    //设置请求头
    [serializer setValue:@"application/soap+xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [serializer setValue:@"application/soap+xml" forHTTPHeaderField:@"Accept"];
   
   //SOAP协议采用 的类似这样的请求体,这个即是下面的 SOAP 消息
   // 
//  
//    
//    
//    H13932169
//    
//    
//    

    NSString* msgLength = [NSString stringWithFormat:@"%lu",soapRequestConfigureModel.SOAPMsg.length];
    
    //请求的内容长度
    [serializer setValue:msgLength forHTTPHeaderField:@"Content-Length"];
    //指定请求的服务器的域名和端口号
    [serializer setValue:@"221.224.118.58" forHTTPHeaderField:@"Host"];
    //自定义请求体 HTTPBody 这步是必须的
    [manager.requestSerializer setQueryStringSerializationWithBlock:^NSString * _Nonnull(NSURLRequest * _Nonnull request, id  _Nonnull parameters, NSError * _Nullable __autoreleasing * _Nullable error) {
        return soapRequestConfigureModel.soapMsg;
    }];

    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    //参数传 SOAPMsg
     [manager POST:BaseURL parameters:SOAPMsg progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        
    }];

构建模块

  • 一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:
  • 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
  • 可选的 Header 元素,包含头部信息
  • 必需的 Body 元素,包含所有的调用和响应信息
  • 可选的 Fault 元素,提供有关在处理此消息所发生错误的信息

语法规则

  • 这里是一些重要的语法规则:
  • SOAP 消息必须用 XML 来编码
  • SOAP 消息必须使用 SOAP Envelope 命名空间
  • SOAP 消息必须使用 SOAP Encoding 命名空间
  • SOAP 消息不能包含 DTD 引用
  • SOAP 消息不能包含 XML 处理指令

消息基本结构



 









 
   
    
    //命令以及包含的参数
    
    H13932169
    
    
    
    

你可能感兴趣的:(基于 SOAP1.2(简单对象访问协议)进行网络请求)