如何用IOS调用WebService(SOAP接口)

2016-02-19 11:32 56 1 收藏

今天图老师小编给大家介绍下如何用IOS调用WebService(SOAP接口),平时喜欢如何用IOS调用WebService(SOAP接口)的朋友赶紧收藏起来吧!记得点赞哦~

【 tulaoshi.com - 编程语言 】

在一次项目开发过程中,用到IOS调用WebService接口,所以抽个空把这方面的内容给大家整理出来,分享给大家。

方法一:使用WSDL2ObjC工具,将接口转成OC类。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

1.在浏览器中输入webService接口地址(Safari不可用,我用的是Firefox),如:http://xxx.xxx.asmx, 地址后面添加上.wsdl成http://xxx.xxx.asmx.wsdl打开。

2.将页面另存为wsdl文件,保存的时候后缀加上.wsdl,保存成如xxxxService.asmx.xml.wsdl。

3.使用WSDL2ObjC工具将wsdl文件转成OC类。

4.将生成的OC类的全部文件导入到项目中。然后就可以调用了。现在没有写Demo,我就贴一部分调用代码,以后有机会传个Demo上来。

- (NSString *)skHkshListOfpagenow2:(NSInteger)aPagenow pagesize:(NSInteger)aPagesize { MURPXzshServiceSoapBinding *binding = [[MURPXzshServiceSoapBinding alloc]initWithAddress:[NSString stringWithFormat:@"%@%@", self.jjjj, XZSH_SERVICE]];//接口地址  binding.logXMLInOut = YES;//可以直接copy  MURPXzshService_HkshList *parm = [[MURPXzshService_HkshList alloc] init];//接口中方法初始化  parm.xxxx = [umcid stringValue];//接口中方法传参数  parm.pagenow = [NSNumber numberWithInteger:aPagenow];//接口中方法传参数  parm.pagesize = [NSNumber numberWithInteger:aPagesize];//接口中方法传参数  MURPXzshServiceSoapBindingResponse *resp = [binding HkshListUsingParameters:parm];//调用方法 //下面是返回值  for (id mine in resp.bodyParts) {   if ([mine isKindOfClass:[MURPXzshService_HkshListResponse class]]) { NSString *resultStr = [mine HkshListResult]; return resultStr;}  }  return nil;}

 注意:上面我的webService名字是MURPXzshService,Soap是MURPXzshServiceSoapBinding,调用的方法是HkshList。

方法二:直接通过网络请求调用,解析XML的方法。

不说了,先上代码:

- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; //假如在这开始请求  NSString *webServiceBodyStr = [NSString stringWithFormat:@"Jsjy_yjy xmlns="http://murpcn.com/murpwebservice/"""xxx34192/xxx""pagenow1/pagenow""pagesize20/pagesize""/Jsjy_yjy"];//这里是参数  NSString *webServiceStr = [NSString stringWithFormat:  @"?xml version="1.0" encoding="utf-8"?n"  "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/"n"  "soap:Bodyn"  "%@n"  "/soap:Bodyn"  "/soap:Envelope",  webServiceBodyStr];//webService头 NSString *SOAPActionStr = [NSString stringWithFormat:@"http://xxx.com/murpwebservice/%@", @"Jsjy_yjy"];//SOAPAction NSURL *url = [NSURL URLWithString:@"http://xxxx/key/MurpjsjyService.asmx"];  NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];  NSString *msgLength = [NSString stringWithFormat:@"%ld", webServiceStr.length];  [theRequest addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-type"];  [theRequest addValue:SOAPActionStr forHTTPHeaderField:@"SOAPAction"];  [theRequest addValue:msgLength forHTTPHeaderField:@"Content-Length"];  [theRequest setHTTPMethod:@"POST"];  [theRequest setHTTPBody:[webServiceStr dataUsingEncoding:NSUTF8StringEncoding]];  NSURLConnection *theConn = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];  if (theConn) { NSLog(@"8888哈哈哈笑");  }else {NSLog(@"5555你给我哭");  }} //接收到数据的代理- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {  } - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];  NSLog(@"%@", str);//得到想要的XML字符串然后解析 //系统自带的  NSXMLParser *par = [[NSXMLParser alloc] initWithData:[str dataUsingEncoding:NSUTF8StringEncoding]];  [par setDelegate:self];//设置NSXMLParser对象的解析方法代理  [par parse];//调用代理解析NSXMLParser对象,看解析是否成功}//解析XML#pragma mark xmlparser//step 1 :准备解析- (void)parserDidStartDocument:(NSXMLParser *)parser{  }//step 2:准备解析节点- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{  NSLog(@"%@", NSStringFromSelector(_cmd) );}//step 3:获取首尾节点间内容- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{  NSLog(@"%@", string);} //step 4 :解析完当前节点- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{  NSLog(@"%@",NSStringFromSelector(_cmd) );} //step 5;解析结束- (void)parserDidEndDocument:(NSXMLParser *)parser{   }//获取cdata块数据- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock{   }

以上内容就是用IOS调用WebService(SOAP接口)的方式,希望对大家有所启迪。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

来源:https://www.tulaoshi.com/n/20160219/1597804.html

延伸阅读
One of the requirements for working with WSE 2.0 is that you must (manually) change the SOAP client's Web reference proxy class' base class from the default - System.Web.Services.Protocols.SoapHttpClientProtocol - to a new class named Microsoft.Web.Services2.WebServicesClientProtocol. This change affects the look of t...
本示例和参考文章的差别在于: 1)deploy.wsdd定义的更详细(对于server端定义了接口:ICalculate): 代码如下: deployment xmlns="http://xml.apache.org/axis/wsdd/"     xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"     service name="Calculate" provider="java:RPC" style="rpc" u...
调用native 方法来开启和关闭vibrator: native static void vibratorOn(long milliseconds); native static void vibratorOff(); 调用方法如下: VibratorService.vibratorOn()
摘要:本文介绍了在Microsoft Visual C++ 6.0下如何调用ACM(Audio Compression Manager,音频 压缩治理器)音频压缩编程接口对原始录入的Wave音频进行数据压缩。 要害字:ACM、CODECs、Wave音频、音频编码压缩 引言 !-- frame contents -- !-- /frame contents -- 音频和视频是多媒体应用程序向用户...
详细讲解如何用ODBC接口访问MySQL指南 MySQL的ODBC接口实现是通过安装MyODBC驱动,这个驱动程序是跨平台的。如果在Linux等Unix体系操作系统下使用,需要先安装Iodbc这些第三方ODBC标准支援平台。  简单的ASP示例代码:   代码如下: %   dim sql,mysql   set sql = server.create...

经验教程

197

收藏

35
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部