获取与 NSURLRequest 关联的 NSURLConnection
Get NSURLConnection associated with an NSURLRequest
我已经 运行 到 this tutorial 从 Ray Wenderlich 那里了解自定义 NSURLProtocols。我有一个场景,我正在拦截特定的 NSURLRequests(称它们为 'request a')并触发另一个请求('request b')。对于第二个请求(b)失败的场景,我希望能够取消原始请求(a),目前它只是在一段时间后超时,但我想要更多的控制并立即失败它。
在自定义 NSURLProtocol 中,我正在使用拦截的 NSURLRequest(请求 a)为请求 b 创建一个新的 NSURLConnection,但是有谁知道是否有可能获得对触发该请求 a 的原始 NSURLConnection 的引用?如果后续请求 b 调用失败,这将允许我取消它吗?
编辑:
None 的 NSURLConnection 委托方法将使我能够访问原始 NSURLConnection 对象,因为在我的示例中 self.connection 将与 'request b' 相关,而不是原始请求 [=12] =]
请参阅下面的示例委托方法:
- (void)startLoading {
self.connection = [NSURLConnection connectionWithRequest:self.request
delegate:self];
}
- (void)stopLoading {
[self.connection cancel];
self.connection = nil;
}
IIRC,您通过在 NSURLProtocol
子类的 client
属性 中的任何对象上调用 NSURLProtocolClient
协议中的方法来与原始连接或会话通信。对象本身可能是 NSURLConnection
或 NSURLSession
机制的一部分,具体取决于请求的启动方式,但无论哪种方式,您都调用相同的方法。
例如,您可能想调用这个:
- (void)URLProtocol:(NSURLProtocol *)protocol
didFailWithError:(NSError *)error;
有关详细信息,请参阅 Apple NSURLProtocolClient Protocol Reference。
我已经 运行 到 this tutorial 从 Ray Wenderlich 那里了解自定义 NSURLProtocols。我有一个场景,我正在拦截特定的 NSURLRequests(称它们为 'request a')并触发另一个请求('request b')。对于第二个请求(b)失败的场景,我希望能够取消原始请求(a),目前它只是在一段时间后超时,但我想要更多的控制并立即失败它。
在自定义 NSURLProtocol 中,我正在使用拦截的 NSURLRequest(请求 a)为请求 b 创建一个新的 NSURLConnection,但是有谁知道是否有可能获得对触发该请求 a 的原始 NSURLConnection 的引用?如果后续请求 b 调用失败,这将允许我取消它吗?
编辑:
None 的 NSURLConnection 委托方法将使我能够访问原始 NSURLConnection 对象,因为在我的示例中 self.connection 将与 'request b' 相关,而不是原始请求 [=12] =]
请参阅下面的示例委托方法:
- (void)startLoading {
self.connection = [NSURLConnection connectionWithRequest:self.request
delegate:self];
}
- (void)stopLoading {
[self.connection cancel];
self.connection = nil;
}
IIRC,您通过在 NSURLProtocol
子类的 client
属性 中的任何对象上调用 NSURLProtocolClient
协议中的方法来与原始连接或会话通信。对象本身可能是 NSURLConnection
或 NSURLSession
机制的一部分,具体取决于请求的启动方式,但无论哪种方式,您都调用相同的方法。
例如,您可能想调用这个:
- (void)URLProtocol:(NSURLProtocol *)protocol
didFailWithError:(NSError *)error;
有关详细信息,请参阅 Apple NSURLProtocolClient Protocol Reference。