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
。