如何使用AFNetworking在iPhone模拟器中通过VPN IP地址进行连接?

10

- (NSString *)baseURL 从文件中提取一个字符串。

NSString *endpoint = @"/authentication.json";
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

NSString *token = @"mytokenvalue"

[manager.requestSerializer setValue:token forHTTPHeaderField:TOKEN_HEADER];
manager.requestSerializer = [AFJSONRequestSerializer serializer];

NSString *path = [NSString stringWithFormat:@"%@%@", [self baseURL], endpoint];

[manager    POST:path
    parameters:nil
    success:^(AFHTTPRequestOperation *operation, id responseObject) {
        if (operation.response.statusCode == 200) {
            [self.delegate validated:true];
        }
  } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        [self.delegate validated:false];
}];
(lldb) po error 错误域= NSURLErrorDomain,代码=-1012,“操作无法完成。(NSURLErrorDomain错误-1012)”UserInfo = 0x7bf3ed90 {NSErrorFailingURLKey = https://1.2.3.4/authentication.json,NSErrorFailingURLStringKey = https://1.2.3.4/authentication.json}
我可以通过终端连接到1.2.3.4的VPN,但是在AFNetworking中却不能。我尝试了1.2.3.4和https://1.2.3.4
我有...
[AFHTTPRequestOperationManager manager].securityPolicy.allowInvalidCertificates = YES;

在我的应用程序委托中。

如何通过AFNetworking连接到这个IP地址?

编辑:关于验证证书链的观点很好。

我禁用了它,并在AFSecurityPolicy.m中验证域名。

确认 db) po [AFHTTPRequestOperationManager manager].securityPolicy.SSLPinningMode AFSSLPinningModeNone 也保留为"None"。


由于网络接口属于模拟器的Mac OS,您可能无法这样做。 - uchuugaka
在阅读了一些资料后,我认为即使将属性设置为 YES,它也可能会在 NSURLConnectionDelegate 实现中以某种方式被重置...只是猜测。我在下面的答案中列出了我发现的内容,我正在尝试整理并测试,以便能够给您一个更好的答案。 - tacos_tacos_tacos
@quantumpotato 我想问的一件事情是,在使用IP地址不正确的主机和使用实际主机名不正确的主机时,结果是否有区别。我认为不会有区别,但是惯例上来说,IP地址永远不会是SSL证书的主题。 - tacos_tacos_tacos
所以我找到了解决方案。它是端口的问题。cURL 自动找到了正确的端口,但 NSURLconnection 没有。 - quantumpotato
你在模拟器中连接了VPN吗? - Gaurav Patel
显示剩余7条评论
1个回答

0

所以我找到了解决方案。问题出在端口上。cURL可以自动找到正确的端口,但NSURLconnection不能。我必须指定

https://1.2.3.4:12345 作为我的URL。(我的电脑IP)

在我的机器上运行

socat TCP-LISTEN:12345,fork TCP:5.6.7.8:12345(其中5.6.7.8是服务器IP)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接