NSURLSession fails when attempting to us assigned IP instead of localhost or home(尝试使用分配的IP而不是本地主机或主目录时,NSURLSession失败)
问题描述
我有一台本地运行的服务器(我的IP是192.168.0.98),并且一直在尝试使用一些网络代码来访问它。最初这是通过AFNetking完成的,但现在我使用了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 }
从我的项目角度来看,我只能使用localhost
。因此,这并不是交易的破坏者。但我很好奇为什么它不起作用。
有人知道可能是什么问题吗?
推荐答案
tl;dr:使用您的Bonjour local link域名而不是您的IP地址。
我自己也遇到了这个问题。我正在本地构建API,还不想部署到外部服务器,但我需要从模拟器和设备调用API。起初我尝试使用本地主机,但当然不适用于设备,因为本地主机将是设备本身,而不是我的Mac。IP地址对设备有效,但在模拟器中不起作用。然后我想起,我可以使用我的Mac的.local
域名来实现其他网络寻址,而且它确实有效。我可以在模拟器和测试设备上使用http://mymac.local/
作为API请求的基本URL。
我不确定为什么使用实际IP地址不起作用,但这可能会为您提供一个可以满足您需要的选项。
这篇关于尝试使用分配的IP而不是本地主机或主目录时,NSURLSession失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:尝试使用分配的IP而不是本地主机或主目录时,
基础教程推荐
- 在视图控制器的宽度上水平均匀分布 UIButton 的最简单方法? 2022-01-01
- 更改 UITableView 部分标题的颜色 2022-01-01
- Android - 如何在runOnUiThread 中将数据传递给Runnable? 2022-01-01
- Firebase 云消息传递令牌未生成 2022-01-01
- 从 UIWebView 访问元数据 2022-01-01
- iOS4 创建后台定时器 2022-01-01
- UINavigationItem 的持久 rightBarButtonItem 属性 2022-01-01
- EditText 中的 setHintTextColor() 2022-01-01
- UINavigationBar 隐藏按钮文本 2022-01-01
- 在 iOS 7 下 CCMenu 错位 2022-01-01