IOS开发笔记 - 基于wsdl2objc调用webservice
为了方便在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的更多相关文章
- iOS开发笔记 基于wsdl2objc调用asp.net WebService
1.准备 先下载待会要用到的工具 WSDL2ObjC-0.6.zip WSDL2ObjC-0.7-pre1.zip 我用的是WSDL2ObjC-0.6.zip 1.1搭建asp.net WebServ ...
- iOS开发笔记--什么时候调用layoutSubviews
iOS开发笔记--什么时候调用layoutSubviews 分类: iOS2014-04-22 16:15 610人阅读 评论(0) 收藏 举报 今天在写程序时候遇见layoutSubviews触发时 ...
- IOS开发笔记 - 基于SDWebImage的网络图片加载处理
前言: 在IOS下通过URL读一张网络图片并不像Asp.net那样可以直接把图片路径放到图片路径的位置就ok, 而是需要我们通过一段类似流的方式去加载网络图片,接着才能把图片放入图片路径显示. 这里找 ...
- iOS开发笔记7:Text、UI交互细节、两个动画效果等
Text主要总结UILabel.UITextField.UITextView.UIMenuController以及UIWebView/WKWebView相关的一些问题. UI细节主要总结界面交互开发中 ...
- iOS开发笔记-两种单例模式的写法
iOS开发笔记-两种单例模式的写法 单例模式是开发中最常用的写法之一,iOS的单例模式有两种官方写法,如下: 不使用GCD #import "ServiceManager.h" ...
- IOS开发笔记(4)数据离线缓存与读取
IOS开发笔记(4)数据离线缓存与读取 分类: IOS学习2012-12-06 16:30 7082人阅读 评论(0) 收藏 举报 iosiOSIOS 方法一:一般将服务器第一次返回的数据保存在沙盒里 ...
- IOS开发笔记 IOS如何访问通讯录
IOS开发笔记 IOS如何访问通讯录 其实我是反对这类的需求,你说你读我的隐私,我肯定不愿意的. 幸好ios6.0 以后给了个权限控制.当打开app的时候你可以选择拒绝. 实现方法: [plain] ...
- Web Service学习笔记:动态调用WebService
原文:Web Service学习笔记:动态调用WebService 多数时候我们通过 "添加 Web 引用..." 创建客户端代理类的方式调用WebService,但在某些情况下我 ...
- 【Swift】iOS开发笔记(二)
前言 这个系列主要是一些开发中遇到的坑记录分享,有助于初学者跨过这些坑,攒够 7 条发一篇. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯 ...
随机推荐
- v$lock 视图访问慢解决方法
V$ 视图访问慢 --解决方法 分析:可能是有数据字典统计信息过久,造成. exec dbms_stats.gather_fixed_objects_stats; ------收集所有数据字典的fix ...
- 重载(overload),覆盖/重写(override),隐藏(hide)
写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖/重写(override),隐藏(hide).在早期的C++书籍中,常常把重载(overload)和覆盖(override)搞错 ...
- 10165 - Stone Game(Nim游戏)
UVA 10165 - Stone Game 题目链接 题意:给定n堆石子,每次能在一堆取1到多个.取到最后一个赢,问谁赢 思路:就裸的的Nim游戏,利用定理求解 代码: #include <s ...
- POJ 2186 Popular Cows (强联通)
id=2186">http://poj.org/problem? id=2186 Popular Cows Time Limit: 2000MS Memory Limit: 655 ...
- 一种基于Qt的可伸缩的全异步C/S架构server实现(一) 综述
本文向大家介绍一种基于Qt的伸缩TCP服务实现.该实现针对C/Sclient-服务集群应用需求而搭建. 连接监听.传输数据.数据处理均在独立的线程池中进行,依据特定任务不同,可安排负责监听.传输.处理 ...
- GCC中初始化函数是怎样被处理的?
本文译至: http://gcc.gnu.org/onlinedocs/gccint/Initialization.html 如我们所知,在GCC通过给代码追加__attribute__((const ...
- javascript (四) 改变html样式
<h1 id="domo"> this is testing test</h1> <script> function changecolor() ...
- ThinkPhp学习05
原文:ThinkPhp学习05 一.ThinkPHP 3 的CURD介绍 (了解)二.ThinkPHP 3 读取数据 (重点) 对数据的读取 Read $m=new Model('User') ...
- 如何关闭android studio开发环境自动保存
使用DW习惯了现在转到学习开发android,请问怎样关闭android studio的自动保存功能,然后按ctrl+s进行保存,因为有时候代码不想让其保存,他也自动保存了. File -> S ...
- qt qml中PropertyAnimation的几种使用方法
qml文章 qt qml中PropertyAnimation的几种使用方法 动画应用场景有以下几种: 首先如果一个Rectangle.动画是要改变它的x和y值 1,Rectangle一旦被创建,就要移 ...