[英]image base64 corrupt post (Objective-C)
我正在尝试发送带有多个参数的帖子,并在base64中包含一个图像。
图像编码做得很好,我在联机base64到图像转换器中检查了base64图像,看起来图像已成功编码。 我可以完成发布过程,没有任何问题,但是当我下载它时,日志显示此错误:
错误:ImageIO:JPEG损坏的JPEG数据:标记0xf1之前的120个无关字节
错误:ImageIO:JPEG不支持的标记类型0xf1
我用一种方法
jpgData = UIImageJPEGRepresentation(image, 0.1f);
imageString = [jpgData base64EncodedStringWithOptions:0];
这是发送帖子的方法,我认为这是错误所在。
- (void)putComment{
dispatch_queue_t backgroundQueue = dispatch_queue_create("com.mycompany.myqueue", 0);
__block int responseCode = 0;
dispatch_async(backgroundQueue, ^{
NSString *requestParams = [NSString stringWithFormat:
@"idAdvertiser=%@&idUserDevice=%@&image=%@&text=%@&userName=%@&groups=%@",
ADVERTISER_ID, idUserDevice, imageString, texto, userName, groups];
[requestParams stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];
NSData *postData = [requestParams dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
// NSData *postData = [requestParams dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLenght = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [NSMutableURLRequest new];
[request setURL:[NSURL URLWithString: URL_COMMENT]];
[request setHTTPMethod:@"POST"];
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[request setHTTPShouldHandleCookies:NO];
[request setValue:postLenght forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Current-Type"];
[request setHTTPBody:postData];
[request setTimeoutInterval:40];
NSError *error = nil;
NSHTTPURLResponse *response;
NSData *responseData = [NSURLConnection sendSynchronousRequest: request
returningResponse: &response
error: &error];
});
}
服务器端工作正常(在Android应用程序中经过测试),因此问题与服务器无关。
您对网址进行编码,因此不需要此行:
[requestParams stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];
删除它,然后再试一次。
也
[request setURL:[NSURL URLWithString: URL_COMMENT]];
可以变成:
[request setURL:[NSURL URLWithString: [URL_COMMENT stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.