说到XML不得不提WEB应用中最常见的几种通讯规范:SOAP,XML-RPC,REST,WSDL,JSON等,他们都是基于XML协定的。在这里介绍几种处理web应用中可以利用的程序库:
现在云计算技术很火,无论是类似 Google App Engine 的 PAAS 还是 Amazon EC2 的 IAAS 服务或者是类似 Twitter 的 SAAS。不可避免的都需要与 XML 打交道。所以掌握了这个标准,开发网络应用就不怕了。
关于这些协议的具体意义这里就不详述了,可查阅相关文档。这里只介绍一些封装好的类库,以便于开发。
WSDL2ObjC
WSDL2ObjC用来处理SOAP类型的web服务。同样也是基于libxml2的Objective-C类库。使用的时候除了libxml2的设定以外,还要添加 CFNetwork.framework 到工程中。
一个简单的例子如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
- (IBAction)pressedRequestButton:(id)sender {
FriendsBinding *bFriends = [[FriendsService FriendsBinding] retain];
bFriends.logXMLInOut = YES;
bFriends.authUsername = u.text;
bFriends.authPassword = p.text;
types_getFavoriteColorRequestType *cRequest = [[types_getFavoriteColorRequestType new] autorelease];
cRequest.friend = @"Johnny";
[bFriends getFavoriteColorAsyncUsingRequest:cRequest delegate:self];
}
- (void) operation:(FriendsBindingOperation *)operation completedWithResponse:(FriendsBindingResponse *)response
{
NSArray *responseHeaders = response.headers;
NSArray *responseBodyParts = response.bodyParts;
for(id header in responseHeaders) {
}
for(id bodyPart in responseBodyParts) {
if ([bodyPart isKindOfClass:[SOAPFault class]]) {
tV.text = ((SOAPFault *)bodyPart).simpleFaultString;
continue;
}
if([bodyPart isKindOfClass:[types_getFavoriteColorResponseType class]]) {
types_getFavoriteColorResponseType *body = (types_getFavoriteColorResponseType*)bodyPart;
q.text = body.color;
continue;
}
}
|
json-framework
json-framework 是一个用 Objective-C 解析 JSON 的程序 Framework。下载后安装到 ~/Library/ 下。然后启动 XCode,编辑项目的设定,如下图:
编译设定中,双击「结构 > 添加SDK」添加下面的sdk。
$HOME/Library/SDKs/JSON/$(PLATFORM_NAME).sdk
同样在「链接 > 其他的链接标记」中添加如下的值。
-ObjC -ljson
最后,在代码中添加 #import <JSON/JSON.h> 就可以使用了。使用的例子如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
NSString *urlString =
@"http://twitter.com/statuses/user_timeline/tomute.json";
NSURL *url = [NSURL URLWithString:urlString];
NSString *jsonString = [NSString stringWithContentsOfURL:url
encoding:NSUTF8StringEncoding
error:nil];
NSArray *jsonArray = [jsonString JSONValue];
for (NSDictionary *dic in jsonArray) {
NSLog([dic objectForKey:@"text"]);
NSLog([dic objectForKey:@"created_at"]);
}
|
需要注意的是,JSONValue解析后的返回值是 NSDictionary 或者是 NSArray ,所以像下面一样用id来表示返回的类型比较好。
1
|
id jsonItem = [jsonData JSONValue];
|
上面的例子是取得Twitter信息的,url换为下面的后,又可以取得Flickr的照片了
http://api.flickr.com/services/rest/?method=flickr.photos.search&
api_key=@"APIKEY"&tags=@"Trip"&per_page=10&format=json&nojsoncallback=1
另外还有 TouchJSON,具体使用的方法都差不多,这里就不在叙述了。
CocoaREST
CocoaREST是一个用来处理RESTful的类库。如果你的程序想要处理Twitter,那么就可以用到它。
一个简单的例子如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
- (void) awakeFromNib {
SDTwitterManager *manager;
manager = [[SDTwitterManager manager] retain];
manager.successSelector = @selector(twitterManager:resultsReadyForTask:);
manager.failSelector = @selector(twitterManager:failedForTask:);
manager.delegate = self;
manager.username = @"USERNAME";
manager.password = @"PASSWORD";
manager.maxConcurrentTasks = 3;
SDTwitterTask *mentionsTask = [SDTwitterTask taskWithManager:manager];
mentionsTask.type = SDTwitterTaskGetPersonalTimeline;
mentionsTask.count = 3;
mentionsTask.page = 10;
[mentionsTask run];
}
- (void) twitterManager:(SDTwitterManager*)manager resultsReadyForTask:(SDTwitterTask*)task {
NSLog(@"%@", task.results);
}
- (void) twitterManager:(SDTwitterManager*)manager failedForTask:(SDTwitterTask*)task {
NSLog(@"%@", task.error);
}
|
除此之外,当然还有很多的web服务应用,这里不能一一列举使用的方法,在以后会做一些更加详细的介绍。
分享到:
相关推荐
iPhone开发系列之二---Objective-C入门知识,是一本很好的书,值得一看
iphone开发技巧UI篇之自定义TabBar iphone开发技巧UI篇之自定义TabBar iphone开发技巧UI篇之自定义TabBar
iphone开发秘籍完整源代码8-10iphone开发秘籍完整源代码8-10iphone开发秘籍完整源代码8-10iphone开发秘籍完整源代码8-10iphone开发秘籍完整源代码8-10
iphone开发秘籍中文第二版,pdf'高清版,好不容易找到的。欢迎下载
iphone开发学习笔记(1)--NSLog
iphone开发秘籍第2版-2~12章源码
iOS网络高级编程 iPhone和iPad的企业应用开发--高清版.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
netdisk_iPhone-2022-07-29-042850.ips
知易Cocos2D-iPhone开发教程源代码。 移动开发新手入门必备。
NULL 博文链接:https://android-zhang.iteye.com/blog/1759395
知易Cocos2D-iPhone开发教程-08知易Cocos2D-iPhone开发教程-08
高通版iPhonex 电路图820-00863-09 820-00864-06.pdf
免费、开源的2D游戏开发引擎,适用于iphone、ipad游戏开发。
Cocos2D-iPhone开发教程,从易到难,适合新手学习,老手进阶
IOS应用源码之cocos2d-cocos2d-iphone-Release_1.1-88-g95fc5a4.zip
IOS应用源码之iphone开发技巧UI篇之Tabbar Arrow效果 TabBarAnimation.zip
iPhone Safari Web开发经验
IOS应用源码之iphone开发技巧UI篇之主题切换 类似weico BEThemeDemo.zip
iOS开发------程序实现国际化Localizable - iPhone手机开发技术文章 - 红黑联盟1
cocos2d-iphone游戏开发pdf 完整版