找不到主机服务器的这个问题,一直是AFN的一大缺点,首先来说说找不到主机服务器的原因把

        我们在进行网络请求的时候,根据TCP/IP协议首先要封装好数据,数据是一层层封装的,当封装到第三层(也就是网络的时候)在数据包里面要封装目的IP地址,而不是封装目的域名,所以首先我们要进行DNS解析,通过查找DNS,返回IP地址进而进行继续封装,现在找不到主机服务器,大部分原因就是出现这块,通过DNS查找要么是返回错误的IP地址,要么是没返回任何结果,此时就是提示找不到主机服务器。国内的DNS服务器都有这样的通病,找不到DNS服务器是一种很正常的现象。

        一。从网络层面进行解决

        1.和公司的网络管理人员进行沟通,排查出口的时候是否设置了DNS;

        2.检查公司的防火墙或者路由器看是否做了什么策略,或者拦截,或者把DNS的端口封掉了

        3.打开数据流量测试网络的DNS服务器功能,分析对比出结果来。

        二、从iOS技术开发角度去解决问题

        首先阿里云出了一个方案就是HTTPDNS,原理大概是提前缓存好你的域名解析出对象的IP地址,当时我们也看了一下,里面调接口是用的原生的方法,一般我们都是用的AFN发起网络请求,如果是加上这个的话,感觉工作量有点大,每个接口都要改,而且改了之后还会或多或少的接口处问题,所以果断放弃了这种方案

        第二种方法

        我们不直接用ip地址去请求接口的主要原因就是:上传APP store 的是审核会不通过,因为苹果审核好像都是在IPV6网络下进行的,封装的时候会安装IPV6的格式封装,我们接口用专用IPV4接口的话直接回导致封装失败,提示“似乎断开了互联网的链接”,目前在我国IPV4还是主流,所以我想到一个方案就是我们在根域名那里做个判断,如果是IPV4网络的话,我们就设置ROOT_URL(根域名)为IPV4的api,即像

#define ROOT_URL  @"http://202.103.24.68/......",这种形式的,在IPV6的情况下封装成域名就可以了,这样两种网络下,都可以访问。判断网络是IPV4还是IPV6的可以自己百度一下。