HTTP 加载失败,我已经尝试了所有 SO 建议,但没有任何效果

HTTP load failed and I have tried all of the SO suggestions, but nothing works

根据 Apple 的 docs,错误 9802 是 "Fatal Alert"。我查看了 Google 和 SO,没有发现任何引用 9802 的内容可以解决此问题。我可以更改我的代码以获取 "apple.com" 并获得该页面,但是使用我自己的 URL,我得到上面的错误。我已经尝试了我能想到的一切,但没有任何效果。是时候寻求帮助了! :D

使用

的结果

/usr/bin/nscurl --ats-diagnostics https://pragerphoneapps.com

是否全部测试失败(结果已上传here

这是我应用程序的 .plist 文件的图像(仅相关部分)

这是目标信息的图像:

这是我的代码:

- (IBAction)showHTMLHelp:(UIButton *)sender {

//  make the popover
UIViewController* popoverContent = [UIViewController new];
UIView* popoverView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 450, 500)];
popoverView.backgroundColor = [UIColor colorWithWhite:(CGFloat)1.0 alpha:(CGFloat)1.0];  //  frame color?
popoverContent.view = popoverView;

//resize the popover view shown in the current view to the view's size
popoverContent.preferredContentSize = CGSizeMake(450, 500);

NSString *urlAddress = @"https://pragerphoneapps.com";     // @"https://www.pragerphoneapps.com/bookstore-inventory-manager/upload-help/";
NSURL  *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

//  add the UIWebView for RichText
UIWebView *webView = [[UIWebView alloc] initWithFrame: popoverView.frame];
webView.backgroundColor = [UIColor whiteColor];  //  change background color here

//  add the webView to the popover
[webView loadRequest:requestObj];
[popoverView addSubview:webView];

//  if previous popoverController is still visible... dismiss it
if ([popoverController isPopoverVisible]) {
    [popoverController dismissPopoverAnimated:YES];
}

//create a popover controller
popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverContent];

[popoverController presentPopoverFromRect:((UIButton *)oShowHelp).frame inView:self.view
                 permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

}

我强烈建议您修复您的 SSL 证书。 ATS 要求您拥有有效的 SSL 证书、TLS 版本 1.2 或更高版本并支持前向保密。 这将是 2017 年初的要求,所以最好做好准备。

无论如何,同时尝试以下步骤以使其正常工作。

将此放在您的文件顶部:

@interface NSURLRequest (InvalidSSLCertificate)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host;
+ (void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString*)host;
@end

在 Info.plist 中禁用应用程序传输安全。

加载请求前允许无效的 SSL 证书:

[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];

成功加载您网站的示例代码:

NSString *urlAddress = @"https://pragerphoneapps.com";     // @"https://www.pragerphoneapps.com/bookstore-inventory-manager/upload-help/";
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];
UIWebView *webView = [[UIWebView alloc] initWithFrame: self.view.frame];
webView.backgroundColor = [UIColor whiteColor];
[self.view addSubview:webView];
[webView loadRequest:requestObj];

我想知道为什么它不能用于设置 "NSAllowArbitraryLoads to YES"。如果有缓存,请尝试重新启动您的 Mac 或 Xcode。 而且您的 "Exception Domains" 设置格式错误。