我的应用中的网页浏览已从新的iOS 9 NSAppTransportSecurity标准中获取这些错误:
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
我不知道这个错误的生成位置,但实际上我想了解如何知道尝试了哪个网址?
之后我可以适当配置plist。
到目前为止,我已在- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
中设置了断点,但在收到错误时未调用此代码。
答案 0 :(得分:2)
如果您只是调试,请将CFNETWORK_DIAGNOSTICS环境变量设置为3,例如
setenv("CFNETWORK_DIAGNOSTICS", "3", 1);
在应用程序开始之前,在您调用可能导致加载CFNetwork框架代码的任何内容之前(即在 main 的开头)。您应该在控制台中获取URL。
如果您需要在运送应用中以允许远程调试的方式执行此操作,请在全局和 canInitWithRequest:方法中注册 NSURLProtocol 对象,打印值并返回NO。即使在启用严格的传输安全性的情况下,应该在该过程中尽早发生。
示例:
@interface MyProtocol: NSURLProtocol
@end
@implementation MyProtocol
+ (BOOL)canInitWithRequest:(NSURLRequest *)request
{
NSLog(@"Request: %@\n", request); // Log it in whatever way you need.
return NO;
}
@end
...
// Somewhere else, e.g. in applicationDidFinishLaunching:, do this:
[NSURLProtocol registerClass:[MyProtocol class]];
无法保证订购,但失败的网址很可能会在失败之前大致打印出来。