Дополнительно
Как отправить “multipart/данные формы” сообщение в Android с залпом
Кто-нибудь смог добиться отправки multipart/данные формы сообщения в Android с залпом еще? Я не пытался загрузить себя изображение/png
через POST-запрос к нашему серверу, и я любопытно, если кто имеет.
Я считаю, что по умолчанию способ сделать это, чтобы переопределить общественных байт[] getPostBody()
в классе request.java и прикрепить файл с пустой ключ заголовка на границе. Однако, преобразования файла в строку для карты<строку, строку> postParams
и затем он снова закодированы, кажется тупым и не очень элегантно. Также Я'вэ были безуспешны в своих попытках. Это действительно единственное, что нас сдерживает от перехода на эту библиотеку.
В любом случае, все мысли и ответы очень ценится. Спасибо за вашу помощь.
87
9
Я могу ошибаться на это, но я думаю, вы должны реализовать свои собственные
ком.андроид.залпом.элементов.HttpStack
за это, потому что по умолчанию (HurlStack
если версия > пряник илиHttpClientStack
) Дон'т бороться сmultipart/данные формы
.Редактировать:
И действительно, я был неправ. Я был в состоянии сделать это, используя
MultipartEntity
в запрос такой:Это'ы довольно сырые, но я пробовал его с изображением и простые строки, и она работает. Ответ заполнителя, не'т сделать много смысла, чтобы возвратить строку, ответ в этом случае. У меня были проблемы с использованием Apache httpmime использовать MultipartEntity так что я использовал этот https://code.google.com/p/httpclientandroidlib/ Дон'т знать, если там'ы лучшую сторону. Надеюсь, что это помогает.
Редактировать
Вы можете использовать httpmime без использования httpclientandroidlib, только зависимость httpcore.
Как отмечено в презентации, в волейбол " в я/о (о 4:05); страшно" и для больших нагрузок. Как я понимаю, что значит не использовать залп для приема/отправки (больших) файлов. Глядя на код похоже, что он даже не предназначен для обработки многокомпонентных данных форм (напр. Request.java имеет getBodyContentType() с жестко "и применение/х-www-формы-urlencoded и"; HttpClientStack::createHttpRequest() может обрабатывать только байт[], и т. д...). Вероятно, вы сможете создать реализацию, которая может обрабатывать многотомные но если бы я был тобой, я просто использовать класс HttpClient напрямую с MultipartEntity как:
Вы, возможно, потребуется новые с помощью HttpClient (т. е. не встроенный) или еще лучше, использовать залпом с новой помощью HttpClient]2
Обновление 2015/08/26:
Если вы Don'т хотите использовать устаревшие HttpEntity, вот мой рабочий пример кода (проверено с веб-API ASP.Net )
MultipartActivity.java
BaseVolleyRequest.java:
КОНЕЦ ОБНОВЛЕНИЯ
Это мой рабочий образец кода (протестирован только с малым размером файлов):
Примеры Использования
Очень простой подход, для Дев, которые просто хотят, чтобы отправить параметры Post в составной запрос.
Сначала определим эти константы :
Добавить вспомогательную функцию, чтобы создать сообщение тело для вас :
Переопределить getBody() и getBodyContentType
Первый ответ на это.
Я столкнулся с той же проблемой и нашли @Алекс 's код очень полезно. Я сделал некоторые простые изменения, чтобы пройти в столько параметров, сколько нужно через HashMap, и у parseNetworkResponse в основном скопированы
()
от StringRequest. Я искал в интернете и так удивилась, узнав, что такая распространенная задача-так редко отвечал. В любом случае, я желаю код может помочь:И вы можете использовать этот класс следующим образом:
Вот простое решение и полный пример для загрузки файла, используя Android волейбол
2)Теперь создайте метода requestmanager класс
3)Теперь создать класс для обработки запросов веб-сервиса для загрузки файла
Другое решение, очень легкий с высокой производительностью грузоподъемностью большие:
Асинхронные клиентской библиотеки Android по протоколу HTTP: http://loopj.com/android-async-http/
Это мой способ сделать это. Это может быть полезным для других :