iOS 调用webService 接口

1 ) SOAP:基于XML的一种协议规范,用来描述传递信息的格式(接口调用要遵循此格式)
2 ) WSDL:描述如何调用或访问具体的接口
3 ) UDDI:管理,查询webService

注:调用接口最重要的就是要遵循SOAP协议格式

SOAP协议一般格式

<?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>   
 //Body之间是需要调用的方法以及参数列表
 </soap:Body> 
</soap:Envelope>

发送soap请求:

//soap格式要和接口吻合
NSString *str = [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>\  
<要调用的方法名 xmlns=\"命名空间\">\ 
<参数>参数值</参数>\ 
...
</要调用的方法名>\
</soap:Body>\  
</soap:Envelope>"];
NSURL *url = [NSURL URLWithString:@"接口网址"];     
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url];      
NSString *length = [NSString stringWithFormat:@"%lu",(unsigned long)[str length]];      
[request setHTTPMethod:@"POST"];     
[request addValue:@"text/xml; charset=utf-8"forHTTPHeaderField:@"Content-Type"];      
[request addValue:length forHTTPHeaderField:@"Content-Length"];     
[request setHTTPBody:[str dataUsingEncoding:NSUTF8StringEncoding]];     // body内容    
NSURLSession *session = [NSURLSession sharedSession]; 
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {      
//请求完成是xml格式的,可以先不处理,用字符串接收查看一下          
NSString *resultStr = [[NSString alloc] initWithData:data  encoding:NSUTF8StringEncoding];         
if (error) {              
NSLog(@"---失败----%@", error.localizedDescription);         
}     
}]; 
[task resume]; }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 首先了解下webservice三要素 SOAP:基于XML的一种协议规范,用来描述传递信息的格式(接口调用要遵循此...
    yyMae阅读 788评论 0 5
  • 一、Java基础 1.写出下面代码的执行结果 2.写出下面代码的执行结果 3.写出下面代码的执行结果 (此题需写出...
    joshul阅读 549评论 0 1
  • 其实我今天写这个东西,主要是为了以后的小伙伴,遇到一些古老的公司会遇到的东西,所以稍微写了点公司里的项目,抛砖引玉...
    炳良哥哥阅读 4,485评论 13 51
  • 能控制好自己情绪的人,比能拿下一座城池的将军更伟大。——拿破仑 喜欢看美女是我的一大爱好,前些日子和闺蜜逛街,正好...
    拙作叔阅读 7,498评论 6 15
  • 今天知道外公得了脑梗塞,心情突然变得焦虑,自己财力有限,很难能帮得上忙。可是想想老人此时的心情,一定比我更加焦虑,...
    老大难阅读 232评论 0 0