我試圖通過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,然後最終將字符串傳遞給服務器 –
已經檢查過你的圖像是否成功存儲在服務器路徑中 –