gpt4 book ai didi

objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:08:47 25 4
gpt4 key购买 nike

我正在尝试在我的计算机中设置一个 http 代理服务器来模拟虚拟开发环境。

为了访问本地 url,我将 DNS 信息放入计算机的 /etc/hosts

这是我的测试代码:

NSURLSession *session = [NSURLSession sharedSession];
NSURL *url = [NSURL URLWithString:@"http://someurl.local/bluh/bluh/path"];
NSURLSessionDataTask *dataTask =
[session dataTaskWithURL:url
completionHandler:^(NSData *data, NSURLResponse *response,
NSError *error) {
NSLog(@"data is %@ error is %@", data, error);
}];
[dataTask resume];

我的实验:1、safari或chrome等浏览器既可以访问本地web服务,也可以访问远程web服务。2. 当访问本地 url 时,NSURLSession 将响应 NSURLErrorDomain Code=-1001 "The request timed out."。3. 如果 url 不在 /etc/hosts 中,NSURLSession 工作正常。

我还尝试了 NSURLConnection,与 NSURLSession 的输出相同。那么,这是否意味着 NSURLConnection/NSURLSession 和浏览器使用不同的策略来执行 DNS?

如何处理或绕过这个?

更新

我为 ios 7.0+ 构建了这个环境。

环境:

  • 计算机系统:OS X 10.9.4 (13E28) 设置了代理服务器。
  • 设备系统:iOS 7.1.2(11D257)

最佳答案

.local 在 OS X 上被视为一个特殊的 TLD,我认为是 iOS。我相信这主要是因为它被使用了 as an indicator for Bonjour lookups .尝试为您的开发域更改为不同的 TLD。我使用“.localhost”;我见过其他人使用“.dev”。两者都按预期工作。

从链接的文章中可以看出,您可能遇到了这个问题,特别是因为您使用的是 x.local — 单个标签,将通过 Bonjour 而不是 DNS 进行查找,所以您可能还会发现 x.y.local 也可以工作,但就我个人而言,我只是避免一起使用 .local

关于objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25278560/

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