我试图通过HTTP POST请求将图像发布到webservice。发送图像的HTTP POST请求
API文档说图像参数应该是“要分析的图像的二进制文件数据 - 仅用于PNG,GIF,JPG”。
这是我想要使用的代码:
UIImage *image = [UIImage imageNamed:@"air.jpg"];
NSData *imgData = UIImageJPEGRepresentation(image, 1.0);
NSURLResponse *response;
NSError *error = nil;
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://pictaculous.com/api/1.0/"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:imgData];
NSData *receivedData = [NSURLConnection sendSynchronousRequest:request
returningResponse:&response
error:&error];
if(error!=nil) {
NSLog(@"web service error:%@",error);
}
else {
if(receivedData !=nil) {
NSError *Jerror = nil;
NSDictionary* json =[NSJSONSerialization
JSONObjectWithData:receivedData
options:kNilOptions
error:&Jerror];
if(Jerror!=nil) {
NSLog(@"json error:%@",Jerror);
}
}
}
的问题是,在JSON响应我总是收到错误消息“您必须提供的图像”,就好像接收到的图像的格式是不正确的。
是不是“UIImageJPEGRepresentation”从图像获取二进制数据的正确方法?
是否有任何其他方式可以从我的JPEG图像获取二进制文件数据?
感谢, 科拉多
转换乌尔的uImage到base64编码,然后把这个字符串传给服务器, –
永远记住,你无法直接将图像存储到服务器,U需要遵循3个步骤,1,UR图像2将NSData的UIImage进行配置3.将NSData转换为NSString,然后最终将字符串传递给服务器 –
已经检查过你的图像是否成功存储在服务器路径中 –