为ASIHTTPRequest自定义requestFinished,requestFailed条件

时间:2012-03-09 11:55:09

标签: iphone objective-c nsurlconnection asihttprequest nsurlrequest

我想自定义ASIHTTPRequest,以便在requestFinished触发时更加挑剔。特别是,当状态代码为requestFinished时,我希望调用200。除此之外,对于所有其他状态代码或网络级故障,我想要requestFailed。有没有办法干净地覆盖默认功能,或者我是否通过尝试修改ASIHTTPRequest来打开一堆蠕虫?如果有办法干净利落地完成它,它在哪里?

3 个答案:

答案 0 :(得分:1)

子类ASIHTTPRequest并提供您自己的reportFinished方法,该方法执行现有的方法,但它应首先检查responseStatusCode,如果它不是200则调用失败委托。

答案 1 :(得分:1)

尝试在ASIHTTPRequest.m

中添加一段代码
- (void)reportFinished
{
    if (self.responseStatusCode !=200){
    //this way, you can get error message you want in requestDidFailed:.
    return [self failWithError:[NSError errorWithDomain:@"Failed" code:ASIConnectionFailureErrorType userInfo:[NSDictionary dictionaryWithObjectsAndKeys:@"Failed to get connection",NSLocalizedDescriptionKey,nil]]];
    }

     ... 
     ... 
}

答案 2 :(得分:0)

你应该实现ASIHTTPRequestDelegate的request:didReceiveResponseHeaders:方法,headers字典应该包含响应代码。

如果值不合适,请致电[request failWithError:error]。例如,错误可以是ASIRequestCancelledError

在这种情况下,您无需接收所有响应正文。