我想自定义ASIHTTPRequest
,以便在requestFinished
触发时更加挑剔。特别是,当状态代码为requestFinished
时,我仅希望调用200
。除此之外,对于所有其他状态代码或网络级故障,我想要requestFailed
。有没有办法干净地覆盖默认功能,或者我是否通过尝试修改ASIHTTPRequest
来打开一堆蠕虫?如果有办法干净利落地完成它,它在哪里?
答案 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
。
在这种情况下,您无需接收所有响应正文。