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

Posted

技术标签:

【中文标题】AFNetworking:使用 IP 地址,应用程序无法访问服务器【英文标题】:AFNetworking: Using IP address, application cannot reach server 【发布时间】:2013-11-12 00:17:19 【问题描述】:

当我尝试使用 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 连接到服务器?

【问题讨论】:

那么,您的服务器没有响应?有什么问题? 嗨,斯科特,这是正确的,当使用 IP 地址时,龙卷风服务器没有响应。我认为 AFHTTPClient 永远不会发现服务器是可访问的,即使使用主机名也是如此。我在原始帖子中添加了一个问题。谢谢。 有没有办法使用ip地址右排? 【参考方案1】:

这是一个常见问题。 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

【讨论】:

以上是关于AFNetworking:使用 IP 地址,应用程序无法访问服务器的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 使用 AFNetworking 保存和持久化 JSON 结果的策略

AFNetworking 原作者都无法解决的问题: 如何使用ip直接访问https网站?

第二次实验报告:使用Packet Tracer分析应用层协议

使用 AFNetworking 下载文件

AFNetworking 可以请求 curl -v 吗?

FPGA实战操作 -- PCIe总线(例程设计分析)