网络概述和允许HTTP请求
网络,可能是现在每个APP必备的功能,所以网络相关的逻辑,贯穿整个APP,网络相关的框架稳定性,易用性,封装的好坏,直接影响到项目的质量;由于这是项目,不是深入课程,所以基本上大部分功能,都是使用目前流行的第三方框架;原因前面也说了。
网络框架
OC这边常用的是AFNetworking,但直接使用它还需要很多封装,所以课程里使用MSNetwork,他是在AFNetworking上进行了封装,但项目使用时还要再次封装;Swift常用的Moya。
允许HTTP请求
从iOS9开始,推荐使用HTTPS,如果使用的HTTP,默认情况下会出现如下错误:
The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.
这是因为iOS9引入了新特性App Transport Security (ATS),他要求App内网络请求必须使用HTTPS协议,也就是默认情况下,不允许发送HTTP请求,但我们这里后端实现的API是HTTP协议,虽然后端课程中讲解了HTTPS,但为了降低课程难度,这里我们先允许HTTP请求,后面在讲解HTTPS请求。
解决方法是要么改为HTTPS,要么声明可以使用HTTP,可以声明部分使用HTTP,也可以所有;但需要说明的是如果APP内所有请求都是HTTP,那么如果要上架App Store的时候基本都会被拒。
源码方式更改
这种方式是直接编辑配置文件。打开工程下的Info.plist文件,在文件dict标签内添加如下内容:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
加完之后
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
</dict>
</plist>
意思是允许使用HTTP,当然还可以配置指定的域名使用HTTP,我们这里是配置所有域名。
可视化更改
通过可视化编辑器。找到:
App Transport Security Settings
,下面的Allow Arbitrary Loads设置为Yes。
这样的编辑方式,同样适用于其他配置文件,后面就不在讲解了。