ios - AFNetworking:使用 IP 地址,应用程序无法访问服务器

标签 ios objective-c afnetworking reachability afhttpclient

当我尝试使用 ip 地址而不是主机名告诉模拟器中的 ios 应用程序与本地服务器通信时,该应用程序卡在加载屏幕上,等待来自服务器的响应,但该响应永远不会到来。

p>

我是 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 连接到服务器?

最佳答案

这是一个常见问题。在 AFNetworking github 页面上对此进行了讨论:https://github.com/AFNetworking/AFNetworking/issues/2191

域和 IP 地址的检查方式不同。

您可以使用通过 managerForAddress: 创建的管理器检查 IP 地址 http://cocoadocs.org/docsets/AFNetworking/2.5.0/Classes/AFNetworkReachabilityManager.html#//api/name/managerForAddress :

希望对您有所帮助!如果您还有其他问题,请告诉我。

编辑

我想我误解了这个问题。

我之前使用 AFHTTPRequestOperationManagerAFURLSessionManager 发送请求,它们都使用 url 中的 IP 地址工作。

可以在这里找到如何使用它们的示例:http://cocoadocs.org/docsets/AFNetworking/2.5.0/#usage

关于ios - AFNetworking:使用 IP 地址,应用程序无法访问服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19918605/

相关文章:

iOS8 RSSI 和 Proximity 意外结果

iOS:UISearchBar 后台问题

ios - AVPlayer - 当视频开始在 ios 中播放时,UILabel 不可见

objective-c - 计时器因调整窗口大小而延迟

ios - 错误域=com.alamofire.error.serialization.response 代码=-1011“请求失败 : bad request (400)

ios - React Native 更改默认 iOS 模拟器设备

objective-c - 重新加载先前卸载的 bundle 时 KVO/KVC 崩溃

ios - ABAddressBookRequestAccessWithCompletion iOS 7 和信号量

ios - 如何在 AFNetworking 2 中执行 AFHTTPRequestOperation

ios - 获取 JSON 文本不是以数组或对象开头以及允许未设置片段的选项