所用xcode版本号: 4.6.3
2. httpRequest-ASIHttpRequest
ASIHttpRequest-api很好的一个参考网站:http://www.dreamingwish.com/dream-2011/apples-third-party-development-libraries-asihttprequest.html
ASIHttpRequest下载地址:
(1). http://allseeing-i.com/ASIHTTPRequest/
(2). http://github.com/pokeb/asi-http-request/tarball/master
在自己桌面上新建一个文件夹iASIHttpRequest
(1). 将asi/Classes/下的所有.h .m (共20个) copy到新建文件夹iASIHttpRequest中
(2). 将asi/External/Reachability/下的.h .m(共2个) copy到新建文件夹iASIHttpRequest中
再往后直接用iASIHttpRequest文件夹,省的每次都从不同的文件夹里拽
注:如果工程支持ARC的话,记得将所有ASI的文件加上“-fno-objc-arc”标注
配置过程:
(1). 将iASIHttpRequest拖到自己的工程中
(2).添加系统库
CFNetwork.framework
SystemConfiguration.framework
MobileCoreServices.framework
libz.1.2.5.dylib
使用
NSURL *requestURL = [NSURL URLWithString:@"http://192.168.0.17:8080/xxx"]; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:requestURL]; // set necessary param [request setRequestMethod:@"POST"]; [request addRequestHeader:@"Content-Type" value:@"application/json;charset=utf-8"]; [request addRequestHeader:@"Content-Length" value:[NSString stringWithFormat:@"%d",aData.length]]; [request appendPostData:[aData dataUsingEncoding:NSUTF8StringEncoding]]; [request setDelegate:self]; // [request setTimeOutSeconds:requestTimeOut]; //超时时间 [request startSynchronous]; //异步
主要的代理方法
/// 请求开始 -(void)requestStarted:(ASIHTTPRequest *)request { } /// 请求结束 *重要 -(void)requestFinished:(ASIHTTPRequest *)request { } /// 请求失败 *重要 -(void)requestFailed:(ASIHTTPRequest *)request { } /// 收到请求的头信息 - (void)request:(ASIHTTPRequest *)request didReceiveResponseHeaders:(NSDictionary *)responseHeaders { }
心得笔记
1. 队列设置最大连接数maxConcurrentOperationCount为5,此时队列中已存在4条请求,然后往队列中在增加一条request,同时[myQueue go]; 此时第五条会启动请求,不会影响前4条。