NSURLProtocol 拦截 NSURLSession 请求时body丢失问题解决方案探讨
“IP直连方案”主要在于解决DNS污染、省去DNS解析时间,通常情况下我们可以在项目中使用 NSURLProtocol 拦截 NSURLSession 请求,下面将支持 Post 请求中面临的一个挑战,以及应对策略介绍一下:
在支持POST请求过程中会遇到丢失 body的 问题,有以下几种解决方法:
方案如下:
- 换用 NSURLConnection
- 将 body 放进 Header 中
- 使用 HTTPBodyStream 获取 body,并赋值到 body 中
- 换用 Get 请求,不使用 Post 请求。
对方案做以下分析
- 换用 NSURLConnection。NSURLConnection 与 NSURLSession 相比会遇到较多的性能问题,同时Apple的一些新特性也无法使用,终究会被淘汰,不作考虑。
- body放header的方法,2M以下