1

我找到了 1 个关于这个问题的帖子,它确实部分回答了这个问题,但恐怕我可能需要一些细节。

我目前正在尝试将 BlobStore 与我的 android 应用程序一起使用,除了 501 错误(HTTP 服务器无法处理您的请求)之外,我什么也得不到。

他是我的密码;

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);

我通过一个运行良好的 GET 请求获取 URL。我还尝试了一个包含 ByteArrayBody 的 FormBodyPart,并将 ByteArrayBody 的 mime 类型设置为“multipart/form-data”,但没有任何效果。我总是收到 501 错误(服务器无法处理您的请求)。

谢谢,感谢所有答案。

4

2 回答 2

3

好的,经过一番搜索,这是解决方案;

似乎标题没有按我的预期工作,所以我只是删除了它们。

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);
于 2011-05-31T16:20:54.700 回答
1

我使用了以下,它的工作。

这是一个示例,如果您发布为 gzip 内容:

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);
于 2012-09-11T18:48:39.747 回答