ASIHttpRequest 请求类
第三方开源库
功能:
<1>遵守http协议,支持数据的同步和异步下载,支持get、post请求
<2>支持数据的异步并发请求(同时请求多个数据)
<3>支持下载大的资源(视频、音频、杂志等),并能随时获取下载进度
<4>支持下载资源的断点续传
现在 公司 都不怎么用ASI ASI 停止更新了 asi 需要导入很多库
现在 公司 都用 AFNetworking 第三方 更新维护 不需要导入库
1.第一步 把ASI 第三库的库 首先添加到工程 (非ARC下)
在arc 环境下 编译非arc 的代码
-fno -objc-arc
在非arc 环境下编译arc 的代码
源码文件 加上编译参数 -fobjc-arc
2.导入四个库
3.//导入第三方的库头文件
#import "ASIHTTPRequest.h"
需要进行下载的界面要遵守协议
@interface RootViewController : UITableViewController<ASIHTTPRequestDelegate>
4.创建ASI下载请求对象
5.设置代理
get
_asiHttpRequest = [ASIHTTPRequest requestWithURL:url];
//设置代理
_asiHttpRequest.delegate = self;
//还可以设置tag值 可以区分 不同的ASI 请求对象
_asiHttpRequest.tag = 101;
//开始 异步请求 下载数据
[_asiHttpRequest startAsynchronous];
6.实现协议中的方法
- (void)requestFinished:(ASIHTTPRequest *)request;
post
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:urlString]];
request.delegate = self;
//设置请求方式
[request setRequestMethod:@"POST"];
//将参数给到request
for (NSString *key in dic) {
id obj = [dic objectForKey:key];
//NSData类型 需要做特殊处理
if ([obj isKindOfClass:[NSData class]]) {
//上传图片,fileName 文件的名称
//andContentType 文件类型
[request setData:obj withFileName:@"2.png" andContentType:@"image/png" forKey:key];
}else{
//普通的参数
[request addPostValue:obj forKey:key];
}
}
[request startAsynchronous];
//将字典转化成json
NSDictionary *testDic = [NSDictionary dictionaryWithObjectsAndKeys:@"test1",@"username",@"20",@"age",nil];
NSLog(@"testDic:%@",testDic);
//将字典转化成json的data
NSData *data = [NSJSONSerialization dataWithJSONObject:testDic options:NSJSONWritingPrettyPrinted error:nil];
NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"json:%@",jsonString);
第三方开源库
功能:
<1>遵守http协议,支持数据的同步和异步下载,支持get、post请求
<2>支持数据的异步并发请求(同时请求多个数据)
<3>支持下载大的资源(视频、音频、杂志等),并能随时获取下载进度
<4>支持下载资源的断点续传
现在 公司 都不怎么用ASI ASI 停止更新了 asi 需要导入很多库
现在 公司 都用 AFNetworking 第三方 更新维护 不需要导入库
1.第一步 把ASI 第三库的库 首先添加到工程 (非ARC下)
在arc 环境下 编译非arc 的代码
-fno -objc-arc
在非arc 环境下编译arc 的代码
源码文件 加上编译参数 -fobjc-arc
2.导入四个库
3.//导入第三方的库头文件
#import "ASIHTTPRequest.h"
需要进行下载的界面要遵守协议
@interface RootViewController : UITableViewController<ASIHTTPRequestDelegate>
4.创建ASI下载请求对象
5.设置代理
get
_asiHttpRequest = [ASIHTTPRequest requestWithURL:url];
//设置代理
_asiHttpRequest.delegate = self;
//还可以设置tag值 可以区分 不同的ASI 请求对象
_asiHttpRequest.tag = 101;
//开始 异步请求 下载数据
[_asiHttpRequest startAsynchronous];
6.实现协议中的方法
- (void)requestFinished:(ASIHTTPRequest *)request;
post
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:urlString]];
request.delegate = self;
//设置请求方式
[request setRequestMethod:@"POST"];
//将参数给到request
for (NSString *key in dic) {
id obj = [dic objectForKey:key];
//NSData类型 需要做特殊处理
if ([obj isKindOfClass:[NSData class]]) {
//上传图片,fileName 文件的名称
//andContentType 文件类型
[request setData:obj withFileName:@"2.png" andContentType:@"image/png" forKey:key];
}else{
//普通的参数
[request addPostValue:obj forKey:key];
}
}
[request startAsynchronous];
//将字典转化成json
NSDictionary *testDic = [NSDictionary dictionaryWithObjectsAndKeys:@"test1",@"username",@"20",@"age",nil];
NSLog(@"testDic:%@",testDic);
//将字典转化成json的data
NSData *data = [NSJSONSerialization dataWithJSONObject:testDic options:NSJSONWritingPrettyPrinted error:nil];
NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"json:%@",jsonString);