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

下面做个小例子。

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

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

//数据加载重新优化


 [WebMethod(Description = "TypeTest for ios")]
public List<TTT> getT()
{
List<TTT> ts = new List<TTT>();
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,并用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调用就实现了~

IOS开发笔记 - 基于wsdl2objc调用webservice的更多相关文章

  1. iOS开发笔记 基于wsdl2objc调用asp.net WebService

    1.准备 先下载待会要用到的工具 WSDL2ObjC-0.6.zip WSDL2ObjC-0.7-pre1.zip 我用的是WSDL2ObjC-0.6.zip 1.1搭建asp.net WebServ ...

  2. iOS开发笔记--什么时候调用layoutSubviews

    iOS开发笔记--什么时候调用layoutSubviews 分类: iOS2014-04-22 16:15 610人阅读 评论(0) 收藏 举报 今天在写程序时候遇见layoutSubviews触发时 ...

  3. IOS开发笔记 - 基于SDWebImage的网络图片加载处理

    前言: 在IOS下通过URL读一张网络图片并不像Asp.net那样可以直接把图片路径放到图片路径的位置就ok, 而是需要我们通过一段类似流的方式去加载网络图片,接着才能把图片放入图片路径显示. 这里找 ...

  4. iOS开发笔记7:Text、UI交互细节、两个动画效果等

    Text主要总结UILabel.UITextField.UITextView.UIMenuController以及UIWebView/WKWebView相关的一些问题. UI细节主要总结界面交互开发中 ...

  5. iOS开发笔记-两种单例模式的写法

    iOS开发笔记-两种单例模式的写法   单例模式是开发中最常用的写法之一,iOS的单例模式有两种官方写法,如下: 不使用GCD #import "ServiceManager.h" ...

  6. IOS开发笔记(4)数据离线缓存与读取

    IOS开发笔记(4)数据离线缓存与读取 分类: IOS学习2012-12-06 16:30 7082人阅读 评论(0) 收藏 举报 iosiOSIOS 方法一:一般将服务器第一次返回的数据保存在沙盒里 ...

  7. IOS开发笔记 IOS如何访问通讯录

    IOS开发笔记  IOS如何访问通讯录 其实我是反对这类的需求,你说你读我的隐私,我肯定不愿意的. 幸好ios6.0 以后给了个权限控制.当打开app的时候你可以选择拒绝. 实现方法: [plain] ...

  8. Web Service学习笔记:动态调用WebService

    原文:Web Service学习笔记:动态调用WebService 多数时候我们通过 "添加 Web 引用..." 创建客户端代理类的方式调用WebService,但在某些情况下我 ...

  9. 【Swift】iOS开发笔记(二)

    前言 这个系列主要是一些开发中遇到的坑记录分享,有助于初学者跨过这些坑,攒够 7 条发一篇. 声明  欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯 ...

随机推荐

  1. 浅析——SCTP协议(转)

    SCTP处于SCTP用户应用层与IP网络层之间,它运用“关联”(association)这个术语定义交换信息的两个对等SCTP用户间的协议状态 .SCTP也是面向连接的,但在概念上,SCTP“关联”比 ...

  2. java大牛list

    1 Java的未来 Java能干什么.不能干什么,一开始就要搞清楚.这对于成为一个纯种的Java程序猿至关重要. 2 构建Java运行环境 Java运行在服务器,服务器都是Linux系统,对于真正程序 ...

  3. [置顶] MyEclipse显示中文界面,在线安装教程

    准备工作 1,装好MyEclipse软件 2,可以上网 3,在线安装地址:http://download.eclipse.org/technology/babel/update-site/R0.11. ...

  4. SpringMVC开发过程中的中文乱码问题

    相信大家在开发初期遇到中文乱码问题一定是一头雾水,不是数据库乱码了就是页面乱码了或者传值时乱码.其实解决乱码的途径很简单,就是统一编码与解码的类型,我把自己遇到的乱码问题整理出来,希望能够对大家有用. ...

  5. 创作gtk源码级vim帮助文档 tags

    创作gtk源码级vim帮助文档 tags 缘由 那只有看到源码了.在linux源码上有个网站 http://lxr.linux.no /+trees, 可以很方面的查出相应版本的代码实现,gtk没有. ...

  6. nginx tcp proxy 连接保持设置

    根据前文Nginx tcp proxy module试用的设置,在测试环境中发现tcp连接经常掉线.在该项目站点上找到一个issue,也谈论这件事情,不过别人用在web socket协议上. 其实就是 ...

  7. SQL中如何将一个表中的某一列的数据复制到另一个表中的某一列里

    表一: SPRD PRD_NO      SPC 001                NULL 002               NULL 003               NULL ...   ...

  8. ZeroClipboard插件:兼容各浏览器网页复制功能

    常规利用JS编写的网页复制功能只对IE有效,无法做到兼容其它浏览器,代码如下: function copyToClipBoard(){ var clipBoardContent="" ...

  9. jquery 学习 (二)

    1)jquery对象和dom对象区别及相互转换 2)jquery和其他库冲突解决 3)css选择器和jquery选择器 3.1)基本选择器(id选择器.类选择器.元素选择器.*选择器.多个选择器以逗号 ...

  10. oracle检查点队列与增量检查点【转载】

    oracle检查点队列与增量检查点 今天是2013-09-04,这几天一直心里安顿不下来,今天还好了,可以自己安静的学习一下oracle,在此记录一下学习笔记.这篇文章我不知道在那转载的,一直都留在我 ...