当我尝试使用 ip 地址而不是主机名来告诉模拟器中的 ios 应用程序与本地服务器通信时,该应用程序会挂在加载屏幕上,等待来自服务器的响应,但该响应永远不会到来。
我是 Objective C 的新手,但代码使用的是处理请求的 AFNetowrking 框架,并且 SCNetworkReachabilityFlags 属性为 AFHTTPClient 对象上的 IP 地址设置不同。
AFHTTPClient 对象的以下 IP 地址和主机名属性是在调试期间捕获的。
<SCNetworkReachability 0xd26d8a0 [0x53b9ec8]>
{address = 127.0.0.1, flags = 0x00010002, if_index = 1}
<SCNetworkReachability 0xcf283f0 [0x53b9ec8]>
{name = localhost (server query active), flags = 0x80000000, if_index = 0}
在 AFHTTPClient.m 类的 startMonitoringNetworkReachability 方法中,有以下 if 语句为 IP 地址触发,但我不知道是否是问题所在:
/* Network reachability monitoring does not establish a baseline for IP addresses as
it does for hostnames, so if the base URL host is an IP address, the initial
reachability callback is manually triggered.
*/
if (AFURLHostIsIPAddress(self.baseURL)) {
SCNetworkReachabilityFlags flags;
SCNetworkReachabilityGetFlags(self.networkReachability, &flags);
dispatch_async(dispatch_get_main_queue(), ^{
AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusForFlags(flags);
callback(status);
});
}
我的问题是导致问题的原因以及如何使用 IP 地址作为 baseURL 连接到服务器?