如何从NSURLRequest获得完整的请求?

Cal*_*leb 5 objective-c nsurlconnection foundation nsurlrequest ios

当NSURLConnection发送NSURLRequest时,有没有办法获取将要发送的实际数据?现在我主要关注HTTP和HTTPS请求,但由于NSURLRequest适用于许多协议,似乎应该有一种通用方法来查看任何类型请求的相应数据.

我错过了什么,或者我是否需要通过组合标题,正文等来自己构建请求?

为了清楚起见,我想以编程方式执行此操作,而不是通过观察服务器端显示的内容.

更新:此时我编写的代码使用NSURLRequest中的数据有效地构造了一个请求,所以我不会问如何去做.但是,我仍然想知道是否有办法访问URL加载系统将生成的请求流.换句话说,如果NSURLConnection发送我的NSURLRequest,我可以访问将发送的确切字节吗?

Cal*_*leb 1

我是否遗漏了某些内容,或者我是否需要通过组合标头、正文等来自己构建请求?

事实证明,这正是我需要做的,而且是有道理的。协议处理程序(NSURLProtocol 子类),而不是 NSURLRequest,知道如何格式化其特定协议的请求。幸运的是,将 NSURLRequest 实例呈现为有效的 HTTP 请求非常容易。您可以从请求中获取方法(GET、POST 等)、请求的资源和主机,还可以使用该-allHTTPHeaderFields方法获取所有 HTTP 标头,该方法返回一个字典。然后,您可以循环字典中的键并向请求添加行,例如:

for (NSString *h in headers) {
    [renderedRequest appendFormat:@"%@: %@\r\n", h, [headers objectForKey:h]];
}
Run Code Online (Sandbox Code Playgroud)