Использование Google BlobStore с приложением Android - PullRequest
1 голос
/ 30 мая 2011

Я нашел 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);

Я получаю URL по запросу GET, который работает довольно хорошо. Я также пытаюсь использовать FormBodyPart, содержащий ByteArrayBody, а также установить mime-тип для ByteArrayBody в «multipart / form-data», но ничего не работает. Я всегда получаю ошибку 501 (сервер не может обработать ваш запрос).

Спасибо, все ответы приветствуются.

Ответы [ 2 ]

3 голосов
/ 31 мая 2011

Хорошо, после некоторого поиска, вот решение;

Кажется, что заголовки работают не так, как я ожидал, поэтому я просто удалил их.

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);
1 голос
/ 11 сентября 2012

Я использовал следующее, и это сработало.

Это пример, если вы публикуете в формате 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...