Reputation: 451
I found 1 thread about this question, which did partially answer the question, but I'm afraid I may need some details.
I'm currently trying to use BlobStore with my android app, and I can't get anything else than a 501 error (the HTTP server can not handle your request).
He is my code ;
HttpPost httpPostImg = new HttpPost(url);
Header header = new BasicHeader("Content-Type", "multipart/form-data");
Header h = new BasicHeader("Connection", "keep-alive");
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
FormBodyPart form = new FormBodyPart("myFile",new ByteArrayBody(image,"multipart/form- data","pict.jpeg"));
entity.addPart(form);
httpPostImg.setEntity(entity);
httpPostImg.setHeader(header);
httpPostImg.setHeader(h);
response = httpClient.execute(httpPostImg);
processResponse(response);
I get the URL by a GET request which is working quite well. I also try a FormBodyPart containing a ByteArrayBody, and also to set mime type for the ByteArrayBody to "multipart/form-data" but nothing worked. I always get a 501 error (server can not handle your request).
Thanx, all answers are appreciated.
Upvotes: 1
Views: 2452
Reputation: 11
I used the following and it worked.
This is an example if you post as gzip content:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream gzos = null;
try {
gzos = new GZIPOutputStream(baos);
gzos.write(xml.getBytes());
} finally {
if (gzos != null)
try {
gzos.close();
} catch (IOException ex) {
}
}
byte[] fooGzippedBytes = baos.toByteArray();
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
entity.addPart("name", new ByteArrayBody(fooGzippedBytes,"application/x-gzip", "filename"));
httpPost.setEntity(entity);
Upvotes: 1
Reputation: 451
Ok, after some search, here is the solution ;
It seems that headers are not working as I expected, so I just deleted them.
HttpPost httppost = new HttpPost(url);
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
entity.addPart("data", new ByteArrayBody(image,"image/jpeg","avatar.jpg"));
httppost.setEntity(entity);
response = httpClient.execute(httppost);
processResponse(response);
Upvotes: 3