打印NSURLRequest正文/查询始终打印为null

时间:2016-12-22 18:50:18

标签: ios objective-c http afnetworking

我正在使用AFNetworking制作网络请求。我继承了NSURLProtocol,并且方法调整它以覆盖默认的NSURLSessionConfiguration并添加我的协议类来拦截Web请求。当调用canInit时,我尝试打印请求数据,特别是我想要正文和查询,但它总是为两者打印null。我知道请求被正确拦截,他们只是没有任何正文/查询数据。有人知道为什么吗?我如何获取身体数据?

2 个答案:

答案 0 :(得分:2)

因此,在做了一些研究之后,我发现苹果文档对NSURLRequests主体和体流说了这个:

  

接收方将拥有HTTP正文或HTTP正文流,只能为请求设置一个。复制NSURLRequest对象时会保留HTTP正文流,但在使用NSCoding协议存档请求时会丢失。

因此,在检查了httpbodystream之后,我发现这是存储实际身体的地方。我不得不复制输入流,将其转换为数据,将其转换为字符串并打印。以下是我如何做到这一点的参考:

How to convert NSInputStream to NSString or how to read NSInputStream

答案 1 :(得分:0)

如果您在NSURLProtocol中这样做,它将无法正常工作,并且流将永远不会被打开:

[self.request.HTTPBodyStream open];

您必须这样做:

NSInputStream* stream = self.request.HTTPBodyStream;
[stream open];