HTTP 终结者 ASI

一、发送请求的2个对象

1.发送GET请求:ASIHttpRequest


2.发送POST请求:ASIFormDataRequest

* 设置参数

// 同一个key只对应1个参数值,适用于普通单值参数

- (void)setPostValue:(id <NSObject>)value forKey:(NSString *)key

// 同一个key(同一个参数名),会对应多个参数值,适用于多值参数

- (void)addPostValue:(id <NSObject>)value forKey:(NSString *)key


二、发送请求

1.同步请求

* startSynchronous


2.异步请求

* startAsynchronous


三、监听请求的过程

1.如何监听请求过程

1> 为代理,遵守ASIHTTPRequestDelegate协议,实现协议中的代理方法

request.delegate = self;

- (void)requestStarted:(ASIHTTPRequest *)request;

- (void)request:(ASIHTTPRequest *)request didReceiveResponseHeaders:(NSDictionary *)responseHeaders;

- (void)request:(ASIHTTPRequest *)request didReceiveData:(NSData *)data;

- (void)requestFinished:(ASIHTTPRequest *)request;

- (void)requestFailed:(ASIHTTPRequest *)request;


2> 成为代理,不遵守ASIHTTPRequestDelegate协议,自定义代理方法

request.delegate = self;

[request setDidStartSelector:@selector(start:)];

[request setDidFinishSelector:@selector(finish:)];


3> 设置block

[request setStartedBlock:^{

    NSLog(@"setStartedBlock");

}];

[request setHeadersReceivedBlock:^(NSDictionary *responseHeaders) {

    NSLog(@"setHeadersReceivedBlock--%@", responseHeaders);

}];

[request setDataReceivedBlock:^(NSData *data) {

    NSLog(@"setDataReceivedBlock--%@", data);

}];

[request setCompletionBlock:^{

    NSLog(@"setCompletionBlock");

}];

[request setFailedBlock:^{

    NSLog(@"setFailedBlock");

}];


2.监听的使用注意

* 如果同时设置了block和实现了代理方法,请求过程中,block和代理方法都会调用

* 一般的调用顺序:代理方法 > block


3.如果实现了下面的代理方法,那么responseData\responseString就没有值

- (void)request:(ASIHTTPRequest *)request didReceiveData:(NSData *)data;


四、文件下载

1.一般的下载

1> 设置文件下载的保存路径

request.downloadDestinationPath = filepath;


2> 设置进度监听的代理(要想成为进度监听代理,最好遵守ASIProgressDelegate协议)

request.downloadProgressDelegate = self.progressView;


2.断点下载(断点续传)

1> 设置文件下载的临时路径

request.temporaryFileDownloadPath = tempFilepath;


2> 设置支持断点续传

request.allowResumeForFileDownloads = YES;


五、文件上传(设置文件参数)

1.如果知道文件路径,最好就用这个方法(因为简单)

// ASI内部会自动识别文件的MIMEType

[request setFile:file forKey:@"file"];

[request addFile:file forKey:@"file"];

[request setFile:file withFileName:@"basic.pptx" andContentType:@"application/vnd.openxmlformats-officedocument.presentationml.presentation" forKey:@"file"];

// .....


2.如果文件数据是动态产生的,就用这个方法(比如刚拍照完获得的图片数据)

[request setData:data withFileName:@"test.png" andContentType:@"image/png" forKey:@"file"];


六、ASIHttpRequest的常见用法

1.请求超时

@property (atomic, assign) NSTimeInterval timeOutSeconds;


2.获得错误信息

@property (atomic, retain) NSError *error;


3.获得响应数据

// 状态码

@property (atomic, assign,readonly) int responseStatusCode;

// 状态信息

@property (atomic, retain,readonly) NSString *responseStatusMessage;

// 服务器返回的具体数据(NSString格式)

- (NSString *)responseString;

// 服务器返回的具体数据(NSData格式)

- (NSData *)responseData;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值