gpt4 book ai didi

ios - 如何打印出失败的 NSURLConnection url 以查找一组 NSAppTransportSecurity 异常?

转载 作者:行者123 更新时间:2023-11-29 10:24:13 26 4
gpt4 key购买 nike

我的应用程序中的 webviews 从新的 iOS 9 NSAppTransportSecurity 标准中得到这些错误:

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)

我不知道这个错误是在哪里产生的,但本质上我想知道如何知道尝试了哪个 URL?

之后我可以适本地配置 plist。

到目前为止,我已经在 - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 中设置了一个断点,但在出现错误时不会调用此代码。

最佳答案

如果您只是调试,请将 CFNETWORK_DIAGNOSTICS 环境变量设置为 3,例如

setenv("CFNETWORK_DIAGNOSTICS", "3", 1);

在您的应用程序的开头,在您调用可能导致 CFNetwork 框架代码加载的任何内容之前(即在 ma​​in 的开头)。您应该在控制台中获取 URL。

如果您需要在发布的应用程序中以允许远程调试的方式执行此操作,请在全局范围内注册一个 NSURLProtocol 对象,并在 canInitWithRequest: 方法中, 打印值并返回 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]];

不能保证顺序,但失败的 URL 可能会在失败之前大致打印出来。

关于ios - 如何打印出失败的 NSURLConnection url 以查找一组 NSAppTransportSecurity 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33263218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com