2022-01-21 05:39:08
Cocoa框架里,无论是用OS层基于 C 的BSD socket还是用对BSD socket进行了轻量级的封装的CFNetwork,对于我这种C语言不及格的同学,那都是极其痛苦的体验,因此我们就用CocoaAsyncSocket来进行socket连接,完全OC风格,非常愉快。
.h文件里没有什么内容只是暴露了一个供外界调用的请求接口,后面介绍,主要是.m文件里的扩展属性:
GCDAsyncSocketDelegate代理的实现:
这里重点说一下sendData这个属性的拼接(很重要,这里的格式决定了你发送的请求数据是否被服务器认可,并给你返回信息,相当于NSURLRequest的作用,其实就是拼接一个http协议):
以上就是建立HTTP连接收发数据的全部内容,如果不需要支持https的话,这个GET请求已经可以完成,下面介绍进行https连接需要进行的设置(在.m文件里实现):(上面提到的[self doTLSConnect:sock]这个方法)
至此发送HTTPS GET请求并且用body传递参数就实现了,是不是很神奇。下面封装一个对外调用的接口(在.h文件中把这个接口暴露出去就行了):
** 其中的DCNetCache类用来暂存网络请求的参数,它是这样子滴:**
这样子就大功告成了,注意把上面的host换成自己的,这里还有许多不完善的地方,我只是实现了简单的GET请求并暂存请求参数,至于你需要其他的功能自己加上就是了。
附一篇讲GCDAsyncSocket的干货文章,非常值得一读