I'm trying to post the following data to my rails App. It's expecting the format to be as follows:
Parameters: {
"utf8"=>"✓",
"authenticity_token"=>"oSJ2ut0T1HGJ+KcBAPPP4lwn8Hc4Xwkn8emVujXy9xQ=",
"wine"=>{"name"=>"nice wine", "vintage"=>"1923", "price"=>"412.2", "photo"=>#<ActionDispatch::Http::UploadedFile:0x007f9c86243d38 @tempfile=#<Tempfile:/var/folders/z9/r6hjby6x2cvfrlldtv7djz8c0000gn/T/RackMultipart20140825-4734-em8b0l>, @original_filename="timtams.jpeg",
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"wine[photo]\"; filename=\"timtams.jpeg\"\r\nContent-Type: image/jpeg\r\n">}, "commit"=>"Create Wine"}
However, I'm getting this now from my android app:
Parameters: {
"photo"=>#<ActionDispatch::Http::UploadedFile:0x007f8b69bd2968 @tempfile=#<Tempfile:/var/folders/z9/r6hjby6x2cvfrlldtv7djz8c0000gn/T/RackMultipart20140827-3309-f5b613>, @original_filename="20140608_172146-3-1.jpg", @content_type="application/octet-stream", @headers="Content-Disposition: form-data; name=\"photo\"; filename=\"20140608_172146-3-1.jpg\"\r\nContent-Type: application/octet-stream\r\n">,
"name"=>"test1",
"vintage"=>"1927",
"price"=>"19.27"}
Is there a way to define "wine" in front of the parameters?
The following are my current codes:
/**
* Created by zhongqinng on 26/8/14.
*/
public class UploadAsync extends AsyncTask {
private String TAG = "UploadAsync";
@Override
protected Object doInBackground(Object[] params) {
postMyWine2();
return null;
}
public void postMyWine2(){
Log.i(TAG, "postMyWine2 start");
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(WineStoryHTTPClient.BASE_URL + "/wines");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
File photofile = new File("/storage/sdcard0/Download/20140608_172146-3-1.jpg");
builder.addPart("photo", new FileBody(photofile));
builder.addTextBody("name", "test1");
builder.addTextBody("vintage", "1927");
builder.addTextBody("price", "19.27");
post.setEntity(builder.build());
Log.i(TAG,"postMyWine2 post.getParams() = "+post.getParams());
try {
Log.i(TAG,"postMyWine2 posting");
HttpResponse response = client.execute(post);
} catch (Exception e) {
Log.i(TAG,"postMyWine2 post Exception");
e.printStackTrace();
}
// HttpEntity entity = response.getEntity();
}
}