AFNetworking 2:它实际上发送了什么?
AFNetworking 2: What's it actually sending?
我正在使用 POST:parameters:constructingBodyWithBlock:
。我相信我尝试发送的内容是正确的,但我从服务器收到了 HTTP 400。所以整个数据包或其中一部分的编码方式有问题。我对此有一些理论,但在我做任何其他事情之前,我想看看我发送的数据实际上是什么样的。
查看 AFNetworking 实际发送用于调试目的的最佳方法是什么?
我尝试过深入追踪,但当我到达 AFMultipartBodyStream
时我迷路了。我不确定如何在不严重攻击 AFNetworking 的情况下捕获其数据。
对于后来好奇的人,我发现这在失败或成功块中效果很好:
NSMutableData *data = [NSMutableData data];
NSInputStream *stream = [operation.request.HTTPBodyStream copy];
[stream open];
BOOL done = NO;
while (!done) {
NSMutableData *buffer = [NSMutableData dataWithLength:1024];
buffer.length = [stream read:buffer.mutableBytes maxLength:buffer.length];
if (buffer.length) {
[data appendData:buffer];
} else {
done = YES;
}
}
[stream close];
生成的数据对象可以写入磁盘,但如果参数完全是字符串(而不是二进制文件),则只能直接转换为字符串。
我正在使用 POST:parameters:constructingBodyWithBlock:
。我相信我尝试发送的内容是正确的,但我从服务器收到了 HTTP 400。所以整个数据包或其中一部分的编码方式有问题。我对此有一些理论,但在我做任何其他事情之前,我想看看我发送的数据实际上是什么样的。
查看 AFNetworking 实际发送用于调试目的的最佳方法是什么?
我尝试过深入追踪,但当我到达 AFMultipartBodyStream
时我迷路了。我不确定如何在不严重攻击 AFNetworking 的情况下捕获其数据。
对于后来好奇的人,我发现这在失败或成功块中效果很好:
NSMutableData *data = [NSMutableData data];
NSInputStream *stream = [operation.request.HTTPBodyStream copy];
[stream open];
BOOL done = NO;
while (!done) {
NSMutableData *buffer = [NSMutableData dataWithLength:1024];
buffer.length = [stream read:buffer.mutableBytes maxLength:buffer.length];
if (buffer.length) {
[data appendData:buffer];
} else {
done = YES;
}
}
[stream close];
生成的数据对象可以写入磁盘,但如果参数完全是字符串(而不是二进制文件),则只能直接转换为字符串。