我正在使用 NSMutableURLRequest 将 base64 编码图像作为发布请求的一部分发送到服务器。我作为帖子正文记录的内容与服务器接收的内容不同。服务器似乎得到了一个截断的版本,就好像连接在中途中止一样。请看下面的代码:
NSString *dataStr = [NSString stringWithFormat:@"request_data=%@",reqStr];
NSLog(@"datastr is %@",dataStr);
NSData *dataForUrl = [dataStr dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"nsdata length is: %i",[dataForUrl length]);
[urlRequest setHTTPBody:dataForUrl];
[urlRequest setValue:[NSString stringWithFormat:@"%d", [dataForUrl length]] forHTTPHeaderField:@"Content-Length"];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *res, NSData *data, NSError *err) {
// ...
}
第一个日志语句显示正确的数据。我什至将字符串的 base64 部分带到http://www.motobit.com/util/base64-decoder-encoder.asp,将其解码为 jpg,它是正确的图像。第二条日志语句显示长度是正确的大小(例如,当图片为 422480 时为 422624)。
我找不到连接详细信息或数据有任何问题。电话建立连接,发送一些数据,然后电话停止发送或服务器停止接收。是什么原因造成的?
编辑:链接到示例数据http://pastebin.com/BS9HjKhg
Edit2:服务器或 iOS 正在将 + 从图像转换为空格。当我找出正确的发送方式时,我会发布答案。