图像上传问题 - base64编码

时间:2011-12-06 11:20:36

标签: iphone json web-services base64

我使用HTTP PUT方法将base64编码的图像字符串传递给服务器端。我已经多次尝试但是收到错误消息作为响应。该错误消息是因为null值在服务器端获得。我已经检查了同样的,在Android代码和它的工作正常。我在下面附上我的代码。

SBJSON *parser = [[SBJSON alloc] init];
NSString *url=[NSString stringWithFormat:@"The URL i am using"] ;   
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];      
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"XXXXX" forHTTPHeaderField:@"USER_AGENT"];

[request setHTTPMethod:@"PUT"]; 
NSString *input=[NSString stringWithFormat:@"abc[image]=%@",base64encodedString];
[request setHTTPBody:[input dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]];

NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];    
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSASCIIStringEncoding];        
NSDictionary *statuses = [parser objectWithString:json_string error:nil];       
[parser release];

[json_string release];  
return statuses;

我从服务器端收到错误消息,如下所示:“'identify'命令无法识别xxxxxx.jpg。”

请提出解决方案。

最后我发现内容类型应该从“application / x-www-form-urlencoded”更改为“multipart / form-data”。任何人都可以告诉我如何使用这种方式传递Base编码的字符串?请...过去20天我支持这个问题......

1 个答案:

答案 0 :(得分:0)

Base64例程可能存在差异。 Base64在服务器和iPhone上编码相同的数据并进行比较。

使用模拟器在Mac上使用网络窥探器(例如Wireshark)来查看实际发生的情况以及服务器的完整返回。如果您使用的是SSL,则可以使用Mac应用Charles查看数据。