`
isiqi
  • 浏览: 16491956 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

iPhone开发技巧之网络篇(2)--- Web服务

阅读更多

说到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) {
                // here do what you want with the headers, if there's anything of value in them
        }

        for(id bodyPart in responseBodyParts) {
                /****
                 * SOAP Fault Error
                 ****/
                if ([bodyPart isKindOfClass:[SOAPFault class]]) {
                        // You can get the error like this:
                        tV.text = ((SOAPFault *)bodyPart).simpleFaultString;
                        continue;
                }

                /****
                 * Get Favorite Color
                 ****/
                if([bodyPart isKindOfClass:[types_getFavoriteColorResponseType class]]) {
                        types_getFavoriteColorResponseType *body = (types_getFavoriteColorResponseType*)bodyPart;
                        // Now you can extract the color from the response
                        q.text = body.color;
                        continue;
                }
// ...
}

json-framework

json-framework 是一个用 Objective-C 解析 JSON 的程序 Framework。下载后安装到 ~/Library/ 下。然后启动 XCode,编辑项目的设定,如下图:

json-framework

编译设定中,双击「结构 > 添加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 {
    // inside a header file, declare manager as an instance variable
    SDTwitterManager *manager;

    // create out manager, retaining it as we want it to stick around
    manager = [[SDTwitterManager manager] retain];
    manager.successSelector = @selector(twitterManager:resultsReadyForTask:);
    manager.failSelector = @selector(twitterManager:failedForTask:);
    manager.delegate = self;

    // this is a must for certain API calls which require authentication
    // change them to real login values or the tasks will fail
    manager.username = @"USERNAME";
    manager.password = @"PASSWORD";

    // 3 tasks can be run simultaneously
    manager.maxConcurrentTasks = 3;

    // create and run a basic task
    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 web开发 iui插件

    本篇文章将深入探讨iUI插件及其在iPhone Web开发中的应用。 首先,iUI的核心在于其提供的两个关键文件:iui.css和iui.js。iui.css文件包含了iPhone用户界面的所有样式规则,如滑动效果、按钮样式、导航栏设计等,...

    用 Eclipse 开发 iPhone Web 应用程序教程大全(含图例和代码)

    总结起来,这篇文章提供了使用Eclipse和Aptana开发iPhone Web应用的全面指南,涵盖了从安装工具到设计用户界面,再到实际编码和测试的全过程。开发者可以通过这些工具和方法,即使在没有苹果官方SDK的情况下,也能...

    Web前端开发与iOS终端开发的异同iOS开发技巧共5页

    在iOS开发技巧方面,以下几点可能对开发者有所帮助: 1. **熟练掌握Swift或Objective-C**:理解并熟练运用面向对象编程思想,学习语言特性和API。 2. **理解MVC设计模式**:iOS应用通常采用Model-View-Controller...

    Iphone开发资料整理

    总结来说,这个“iPhone开发资料整理”集合了iPhone应用开发的关键元素,包括Cocoa框架的理解、Dashcode的实践应用、Objective-C编程语言的学习,以及可能涵盖的设备特性和优化技巧。这些资源对于想要踏入iPhone开发...

    windows-server-2008R2WEB修改域用户密码图文介绍.docx

    在 Web 应用设置中,需要注意 `”apple-touch-icon” href=”iphon_tetris_icon.png”/&gt;` 在设置书签的时候可以显示好看的图标, `”apple-mobile-web-app-capable” content=”yes” /&gt;` 离线应用的另一个技巧, `...

    《iPhone4与iPad开发基础教程》PDF版本下载.txt

    根据提供的文件信息,我们可以推断出这是一本关于iPhone4与iPad应用开发的基础教程书籍,并提供了两种下载方式:一种是通过百度云盘下载,另一种则是直接通过网站链接进行下载。虽然具体的书籍内容无法在此直接获取...

    iPhone in Action Introduction to Web and SDK Development

    本书不仅适合初学者,也适合有一定经验的开发者,通过深入浅出的讲解,帮助读者掌握iPhone开发的核心技术。 ### 重要知识点详解 #### iPhone核心规格介绍 - **输入与输出规格**:书中详细介绍了iPhone的各种输入...

    iphone开发实践

    在“iPhone开发实践”这一主题中,我们主要探讨的是如何针对iPhone平台进行应用开发,特别是基于Web的应用程序。iPhone开发基础教程通常涵盖了一系列的技术和工具,包括HTML、CSS、JavaScript,有时还会涉及PHP等...

    Apress---Beginning-iPhone-and-iPad-Web-Apps.zip_MacOS编程_Objective-C_

    《Apress - Beginning iPhone and iPad Web Apps》这本书深入浅出地介绍了如何在苹果的iOS平台上开发Web应用程序,主要针对的是初学者,同时也为有经验的开发者提供了宝贵的参考。书中涵盖了MacOS编程的基础知识,...

    Beginning iPhone and iPad Web Apps

    《初识iPhone与iPad Web应用开发》是一本专注于在苹果移动设备上构建Web应用程序的入门指南。本书旨在帮助读者理解并掌握如何利用Web技术,如HTML、CSS和JavaScript,为iPhone和iPad用户创建功能丰富的、优化的Web...

    苹果iPhone_WebApp_开发指南

    本指南将详细讲解这一开发过程,帮助开发者快速掌握iPhone WebApp的制作技巧。 一、前言 在苹果iPhone推出后,其强大的硬件性能和丰富的软件生态吸引了大量用户。为了满足个性化需求,开发者可以通过SDK或WebApp的...

    Programming the Mobile Web.pdf 手机网页开发

    针对特定平台的开发技巧 - **Android**:对于Android平台,了解如何使用WebViews来嵌入网页内容非常重要。此外,还需要熟悉Android SDK中的相关工具和API。 - **iPhone/iOS**:在iOS平台上,开发者可以利用Safari...

    iPhone与iPad开发实战—iOS经典应用剖析

    ### iPhone与iPad开发实战—iOS经典应用剖析 #### 课程概述 本课程旨在为有一定基础的学员提供深入的iPhone与iPad开发实战经验。通过一系列实际案例的学习,学员将能够掌握最新的iOS开发技术和方法论,包括iOS 5 ...

    Cocos2d开发资源大集合

    - **知易Cocos2D-iPhone开发教程系列**:一系列详细的教学视频,覆盖了从基础知识到进阶技巧的各个方面,适合不同水平的开发者学习。 #### 四、英文书籍推荐 - **Learn iPhone and iPad cocos2d Game Development*...

    Safari and WebKit Development for iPhone OS 3.0

    无论您是初学者还是有一定经验的开发者,都能从本书中获得实用的技术知识和开发技巧。本书特别强调了如何使 Web 应用看起来像原生应用,以及如何利用 iPhone 的独特功能来增强用户体验。 #### 三、核心知识点概述 - *...

Global site tag (gtag.js) - Google Analytics