博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS开发笔记 - 基于wsdl2objc调用webservice
阅读量:5341 次
发布时间:2019-06-15

本文共 2715 字,大约阅读时间需要 9 分钟。

为了方便在ios下调用webserivce,找来了这样一个开源的框架来解析webservice方便在ios下引用。

下面做个小例子。

1.首先是用Asp.net搭建一个测试的webserivce并放在IIS服务器上面

核心代码如下: 返回一个TTT的泛型集合

//数据加载重新优化

 

 

[WebMethod(Description = "TypeTest for ios")]        public List
getT() { List
ts = new List
(); for (int i = 1; i <= 9; i++) { TTT t = new TTT(); t.name = "x" + i; t.id = i; t.pid = 0; ts.Add(t); } return ts; }

 

2.下载,并用wsdl2objc这个工具去对webservice进行解析,得到一份代码。

 

wsdl2objc使用也是比较简单的,我把webserivce寄托在局域网内末IP为241端口为24的机子上,

第二行放入的路径就是要生成代码的文件路径 /Users/lenbol/Desktop/NiceTesttt/NiceTesttt/Service,

然后点击Parse WSDL, 待程序出现Finished!字样时,在我的NiceTesttt项目下的Service文件下就生成出了一些代码,

选中的文件是工具自动生成的,其中WebSerivce文件是把wsdl解析好的关键性文件,Produce也是一个服务,其他的文件是每次生成附带的通用文件。

3.为了对WebService更好地管理,因此建立了一个WebSerivceManager去处理一些逻辑问题。

WebSerivceManager中写一个方法去调用webserivce并用NSLog暴露调试输出调用结果。

关键代码:

 

-(void)getTTT{    NSMutableArray *result ;    WebServiceSoap12Binding *binding = [WebService WebServiceSoap12Binding];    WebService_getT *request = [[WebService_getT alloc]init];        WebServiceSoap12BindingResponse *respone=[binding getTUsingParameters:request];    for(id mine in respone.bodyParts)    {        if([mine isKindOfClass:[WebService_getTResponse class]])        {            [request release];            result=[mine getTResult].TTT;        }    }    for(WebService_TTT* t in result)    {        NSLog(@"name: %@ id:%d - pid:%d ",t.name,[t.id_ intValue] ,[t.pid intValue]);    }}

由于在.net下服务方法返回的是一个LIST集合,在IOS下需要用用一个可变数组(NSMutableArray)去接收结果。

 

在这个方法中可以看到,开始NSMutableArray *result ;是建立一个可变数据为结果做准备。

然后WebServiceSoap12Binding *binding = [WebService WebServiceSoap12Binding];是建立一个soapbinding的对象。

接下来WebService_getT *request = [[WebService_getT alloc]init];是建立一个request的对象,这个对象可以放入传入的参数,由于测试的服务无参数,在这个对象中也就不用传入参数,但为了调用服务,还是必须声明这个对象不然会报错的~

接着就是用一个soap12bindingResponse的对象去处理结果 并循环遍历把结果赋值给开始声明的可变数组result,最后循环输出结果。

 

调用getTTT:

2013-07-09 10:03:02.128 NiceTesttt[1016:c07] name: x1 id:1 - pid:0 2013-07-09 10:03:02.130 NiceTesttt[1016:c07] name: x2 id:2 - pid:0 2013-07-09 10:03:02.130 NiceTesttt[1016:c07] name: x3 id:3 - pid:0 2013-07-09 10:03:02.130 NiceTesttt[1016:c07] name: x4 id:4 - pid:0 2013-07-09 10:03:02.131 NiceTesttt[1016:c07] name: x5 id:5 - pid:0 2013-07-09 10:03:02.131 NiceTesttt[1016:c07] name: x6 id:6 - pid:0 2013-07-09 10:03:02.131 NiceTesttt[1016:c07] name: x7 id:7 - pid:0 2013-07-09 10:03:02.172 NiceTesttt[1016:c07] name: x8 id:8 - pid:0 2013-07-09 10:03:02.175 NiceTesttt[1016:c07] name: x9 id:9 - pid:0

nice!这样一个简单的webserivce调用就实现了~

 

 

转载于:https://www.cnblogs.com/dyllove98/p/3180234.html

你可能感兴趣的文章
DAL 层引用 System.Net.Http ,引发的一阵心慌
查看>>
写在最前面的话
查看>>
C语言计算字符串子串出现的次数
查看>>
【Object-C】类Class
查看>>
Session
查看>>
bzoj 4034: [HAOI2015]树上操作 (树剖+线段树 子树操作)
查看>>
Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
查看>>
ios录音Demo
查看>>
2019年第十届蓝桥杯省赛总结(JavaA组)
查看>>
hibernate 第四天 重点查询的方式
查看>>
关于Layer弹出框初探
查看>>
Asp.Net MVC 获取当前 Controller Action Area
查看>>
团队现场编程实战(抽奖系统)
查看>>
Spring Security笔记:使用数据库进行用户认证(form login using database) - 菩提树下的杨过 - 博客园...
查看>>
php扩展redis链接失败,返回false
查看>>
【GOF23设计模式】--单例模式
查看>>
第五次作业
查看>>
电烙铁的使用小技巧
查看>>
cmder中文乱码、文字重叠等问题
查看>>
jenkins环境搭建
查看>>