Iphone 自定义ASIHTTPRequest的requestFinished、requestFailed条件

Iphone 自定义ASIHTTPRequest的requestFinished、requestFailed条件,iphone,objective-c,nsurlconnection,asihttprequest,nsurlrequest,Iphone,Objective C,Nsurlconnection,Asihttprequest,Nsurlrequest,我想定制ASIHTTPRequest,以便在触发requestFinished时更加挑剔。特别是,我只希望在状态代码为200时调用requestFinished。除此之外,对于所有其他状态代码或网络级故障,我需要一个requestFailed。有没有一种方法可以干净地覆盖默认功能,或者通过尝试修改ASIHTTPRequest来打开一罐蠕虫?如果有一种干净的方法,它在哪里?子类ASIHTTPRequest并提供您自己的reportFinished方法,该方法执行现有方法的操作,但它应该首先检查re

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

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

您应该实现ASIHTTPRequestDelegate的
请求:didReceiveResponseHeaders:
方法,headers字典应该包含响应代码

如果该值不合适,只需调用
[请求失败错误:错误]
。例如,错误可以是
asirequestcancelederror


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

尝试在
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]]];
    }

     ... 
     ... 
}

在这种情况下,即使您不需要,您也会收到整个响应体。也许您是对的。但既然你不需要它,那么做也没什么坏处。而且,如果发生故障,您可以在该方法中重写
responseString