AFNetworking 中的 Calc Content-MD5
Posted
技术标签:
【中文标题】AFNetworking 中的 Calc Content-MD5【英文标题】:Calc Content-MD5 in AFNetworking 【发布时间】:2013-08-27 08:45:34 【问题描述】:我正在尝试为多部分格式上传的有效负载计算 content-md5 标头:
NSURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:@"/upload"
parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData> formData)
[formData appendPartWithFileData:imageData name:@"avatar" fileName:@"avatar.png"
mimeType:@"image/png"];
];
我尝试阅读HTTPBodyStream
:
if ([request HTTPBodyStream])
NSInteger result;
uint8_t buffer[1024];
while((result = [[request HTTPBodyStream] read:buffer maxLength:1024]) != 0)
if(result > 0)
[data appendString:[NSString stringWithUTF8String:(char *)buffer]];
else ...
但我最终陷入了无限循环。有没有办法做到这一点?
更新
[[request HTTPBodyStream] streamError]
在while
循环结束时返回null
如果我在result < 0
时中断while 循环,但是流将不完整。
【问题讨论】:
我假设您的else ...
会中断循环?
是的,可能。但是从文档中,它声明了A negative number means that the operation failed
。由于我没有从网络上读取,它应该失败吗?
我不确定NSURLConnection
是否允许从file://
url 读取(我假设这就是您的意思)。如果得到 0 或
【参考方案1】:
如果读取小于最大缓冲区大小(1024),使用 hasBytesAvailable && 怎么样。这意味着到达 EOF。
`while([[request HTTPBodyStream] hasBytesAvailable] && [[request HTTPBodyStream] read:buffer maxLength:1024]) == 1024)'
【讨论】:
除非我理解错误,否则缓冲区暂时只在read:buffer
方法期间,不包含整个东西?
另外,结果是 A negative number means that the operation failed.
0
表示已到达缓冲区末尾; A
负数表示操作失败。
但是无论如何在读取小于最大字节数的情况下。这是失败的迹象,或者数据块应该是最后的以上是关于AFNetworking 中的 Calc Content-MD5的主要内容,如果未能解决你的问题,请参考以下文章