REST(Resentational State Transfer)是一种轻量级的Web Service架构风格,其实现和操作明显比SOAP和XML-RPC更为简洁,可以完全通过HTTP协议实现,还可以利用缓存Cache来提高响应速度,性能、效率和易用性上都优于SOAP协议。
Iphone调用使用ASIHttpRequest,它是一个直接在CFNetwork上做的开源项目,提供了一个比官方更方便更强大的HTTP网络传输的封装,非常的好用。
需求:根据用户名获取用户的信息。
首先我们先做一个这样的页面效果:
定义下面方法与button的点击事件对应:
- (IBAction)fetchJson:(id)sender; - (IBAction)fetchJson:(id)sender { NSString *name = username.text; NSLog(@"==========%@",name); NSURL *url = [NSURL URLWithString:@"http://xxx.com/ws/mooc/lesson/getUserInfo"]; ASIHTTPRequest *req = [ASIHTTPRequest requestWithURL:url]; [req addRequestHeader:@"username" value:name]; [req setRequestMethod:@"GET"]; [req startSynchronous]; NSError *error = [req error]; if (!error) { NSString *response = [req responseString]; UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"返回的数据" message:response delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alertView show]; [alertView release]; } }
你会发现这种方式比使用soap协议更简洁易用。
说道这里你们又该问了:怎么在项目中使用ASIHttpRequest这个框架呢?不急这就给你们道来。
1、打开Xcode,找到我们的项目,创建一个文件夹External文件放置我们需要的资源文件,
所需文件列表如下:
ASIHTTPRequestConfig.h
ASIHTTPRequestDelegate.h
ASIProgressDelegate.h
ASICacheDelegate.h
ASIHTTPRequest.h
ASIHTTPRequest.m
ASIDataCompressor.h
ASIDataCompressor.m
ASIDataDecompressor.h
ASIDataDecompressor.m
ASIFormDataRequest.h
ASIInputStream.h
ASIInputStream.m
ASIFormDataRequest.m
ASINetworkQueue.h
ASINetworkQueue.m
ASIDownloadCache.h
ASIDownloadCache.m
ASIAuthenticationDialog.h
ASIAuthenticationDialog.m
Reachability.h (在源码的 External/Reachability 目录下)
Reachability.m (在源码的 External/Reachability 目录下)
具体详见官网http://allseeing-i.com/ASIHTTPRequest/
2、链接相关类库
1. 选中项目
2. 选中目标
3. 跳转到“Build Phases”标签
4. 展开“Link Binary With Libraries”分组
5. 点击“+”添加类库(需要的类库有CFNetwork.framework,SystemConfiguration.framework,MobileCoreServices.framework,CoreGraphics.framework和libz.1.2.3.dylib)
如图: