首页 > 解决方案 > [iOS]如何使用私有IP地址的NSURLConnection?

问题描述

我在 A (iPhone) 上有一个 iOS 应用程序,有一台计算机 B 在与 A 所在的同一网络中,并且互联网上还有一个远程服务器 C。本来通过NSURLConnection可以GET https://domain_of_C/resources直接从app调用获取C上的一些资源,现在的要求是我需要先调用B在192.168.1.2(B的IP地址)by: GET https://192.168.1.2/resources,然后B应该帮A转发一切到 C,以及从 C 到 A 的响应。B 应该盲目地通过数据包,包括 SSL 数据包。

下面是一个代码片段:

NSURL *newUrl = [NSURL URLWithString:@"https://192.168.1.2/resources"];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:newUrl];

[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError)

我收到以下错误:

2018-11-26 10:10:50.666321-0500 [72744:1796043] TIC SSL Trust Error [3:0x600002c98180]: 3:0
2018-11-26 10:10:50.667535-0500 [72744:1796043] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9843)
2018-11-26 10:10:50.667641-0500 [72744:1796043] Task <68E602A9-1FF8-4A60-AE72-191AA1D8D730>.<0> HTTP load failed (error code: -1202 [3:-9843])

但是,如果我使用http://192.168.1.2/resources作为 URL(这里是 HTTP,不是 HTTPS),它可以工作,这意味着我可以成功地从 A 访问远程服务器上的资源。 B 的设计是它应该盲目地把所有东西都传给C,包括SSL会话,这意味着我根本不希望处理SSL证书。

我不完全知道为什么 iOS 在这种情况下会抛出错误,但我想知道是否有任何方法可以避免这个错误。

标签: iossslnsurlconnection

解决方案


推荐阅读