微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – 尝试向我们分配IP而不是localhost或home时,NSURLSession失败

我有一台本地运行的服务器(我的IP是192.168.0.98),并且已经尝试使用一些网络代码来访问它.最初这是通过AFNetworking完成的,但我现在用这样的NSURLSession完成了它:
NSURLSession *session = [NSURLSession sharedSession];
NSURL *url = [NSURL URLWithString:@"http://192.168.0.98:8080/api"];
NSURLSessionDataTask *task = [session dataTaskWithURL: url
                                    completionHandler:^(NSData *data,NSURLResponse *response,NSError *error) {
                                        NSLog(@"Error: %@",error);
                                        NSLog(@"Body: %@",[[Nsstring alloc] initWithData:data encoding:NSUTF8StringEncoding]);
                                    }];
[task resume];

然后我用这3个URL运行它:

> http:// localhost:8080 / api – >作品.
> http://127.0.0.1:8080/api – >作品.
> http://192.168.0.98:8080/api – >失败并出现错误

Error Domain=NSPOSIXErrorDomain 
Code=2 "No such file or directory" 
UserInfo={
    NSErrorFailingURLStringKey=http://192.168.0.98:8080/api,NSErrorFailingURLKey=http://192.168.0.98:8080api,_kcfStreamErrorCodeKey=2,_kcfStreamErrorDomainKey=1
}

其中192.168.0.98是分配给本机的IP.如果我从PAW或浏览器运行这些URL,它可以正常工作.但是从单元测试中它失败了.

从我的项目的角度来看,我可以使用localhost.所以这不是交易破坏者.但我很好奇它为什么不起作用.

有谁知道问题可能是什么?

解决方法

tl; dr:使用您的 Bonjour local link域名而不是您的IP地址.

我自己也遇到了这个问题.我正在本地构建一个API,并且不想部署到外部服务器,但我需要从模拟器和设备调用API.我首先尝试使用localhost,但当然这对设备不起作用,因为localhost将是设备本身,而不是我的Mac. IP地址适用于设备,但在模拟器中不起作用.然后我记得我可以使用我的Mac的.local域名来实现其他网络可寻址性,而且确实可行.我可以在模拟器和我的测试设备上使用http://mymac.local/作为我的API请求的基本URL.

我不确定为什么使用实际的IP地址不起作用,但这可能会为您提供一个适合您需求的选项.

原文地址:https://www.jb51.cc/iOS/331821.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐