dre*_*kka 7 networking ios 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];
Run Code Online (Sandbox Code Playgroud)
然后我用这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
}
Run Code Online (Sandbox Code Playgroud)其中192.168.0.98是分配给本机的IP.如果我从PAW或浏览器运行这些URL,它可以正常工作.但是从单元测试中它失败了.
从我的项目的角度来看,我可以使用localhost.所以这不是交易破坏者.但我很好奇它为什么不起作用.
有谁知道问题可能是什么?
小智 6
tl; dr:使用您的Bonjour本地链接域名而不是您的IP地址.
我自己也遇到了这个问题.我正在本地构建一个API,并且不想部署到外部服务器,但我需要从模拟器和设备调用API.我首先尝试使用localhost,但当然这对设备不起作用,因为localhost将是设备本身,而不是我的Mac.IP地址适用于设备,但在模拟器中不起作用.然后我记得我可以使用.local我的Mac 的域名来获得其他网络可寻址性,而且确实有效.我可以http://mymac.local/在模拟器和测试设备上用作API请求的基本URL.
我不确定为什么使用实际的IP地址不起作用,但这可能会为您提供一个适合您需求的选项.
| 归档时间: |
|
| 查看次数: |
1970 次 |
| 最近记录: |