我有一个实现NSURLProtocol
的类,并在NSURLConnection
方法中启动了一个新的startLoading
。我还需要所有请求的HTTP响应,所以我通过实现数据委托方法connection:didReceiveResponse
来实现。对于HTTP重定向,我还实现connection:willSendRequest:redirectResponse:
,其中我调用NSURLProtocolClient方法进行重定向。以下是代码
(NSURLRequest *)connection:(NSURLConnection *)connection
willSendRequest:(NSURLRequest *)request
redirectResponse:(NSURLResponse *)response {
if (response) {
[self.client URLProtocol:self
wasRedirectedToRequest:request
redirectResponse:response];
}
return request;
}
当redirectResponse不是connection:didReceiveResponse
时,此代码的问题是nil
永远不会被调用。当我注释掉协议客户端的URLProtocol:wasRedirectedToRequest:redirectResponse
方法时,connection:didReceiveResponse
开始再次被调用。
我不确定这里发生了什么。任何人都可以对这种行为有所了解吗?