为了方便在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. Python WxPython 的安装以及使用

    WxPython 网址 学习网址 http://wiki.wxpython.org/How%20to%20Learn%20wxPython 安装网址 http://wiki.wxpython.org/ ...

  2. linux:sed高级命令之n、N(转)

    sed的语法格式: sed [option] {sed-command} {input-file} sed在正常情况下,将处理的行读入模式空间(pattern space),脚本中的“sed-comm ...

  3. HDU 4293 Groups

    模型挺好的dp题,其实这道题就是建一个模型然后就很容易想到递推过程了,我们可以把每个人的描述,存到数组a中,a[l][r]表示左边有l个,到第r个这个人所在一层停止...然后就可以写出转移状态方程了. ...

  4. 流式计算-Jstorm提交Topology过程(上)

    Topology是Jstorm对有向无环图的抽象,内部封装了数据来源spout和数据处理单元bolt,以及spout和bolt.bolt和bolt之间的关系.它能够被提交到Jstorm集群. 本文以J ...

  5. KNN算法理解

    一.算法概述 1.kNN算法又称为k近邻分类(k-nearest neighbor classification)算法. 最简单平庸的分类器或许是那种死记硬背式的分类器,记住全部的训练数据,对于新的数 ...

  6. Swift - 点击输入框外部屏幕关闭虚拟键盘

    我们如果把文本框的Return Key设置成Done,然后在storyboard中将文本框的Did End On Exit事件在代码里进行关联.同时关联代码里调用文本框的resignFirstResp ...

  7. unity 调用android函数

    unity 调用android函数 分类: unity2013-12-19 17:54 475人阅读 评论(0) 收藏 举报 unityandroidjar 我们知道,安卓project都有一个And ...

  8. Linux下限制Shell:Rssh和Scponly

    限制Shell,正如Rsh和Scponly让系统管理员限制Linux用户可以做哪些操作,你可以创建用户,将被允许通过Scp复制文件,但不会被允许登录到系统的命令行.这是非常重要的安全功能,应考虑每个系 ...

  9. 10881 - Piotr's Ants

    Problem D Piotr's Ants Time Limit: 2 seconds "One thing is for certain: there is no stopping th ...

  10. Photoshop图象切片保存为网页HTML(DIV+CSS布局)的方法

    首先,制作图象切片(以一张图片为例子) 一.选择“切片”工具,在图像上拖动以分割图像(例如:一张图像切割2次就形成3个切片)切片后如下图 二.设置切片选项(如大小.目标链接.图片说明等等):选择“切片 ...