Intereting Posts
Установите разрешение «разрешить» по умолчанию в «Автозагрузке Asus» из кода Проверить на resultCode в Android BroadcastReceiver? Как сделать пакетный режим доступным для камеры Eclipse с плагином Android – Заблокировано при «вычислении требований и зависимостей» Как программно заполнить раздел напоминаний в приложении «Календарь» Android-устройства? Android Layout с ListView между «верхней панелью» и «нижней панелью», Как сохранить состояние фрагмента без стопки в закладке? Как я могу исключить внешний .jar из obfuscation от Proguard (проект Android)? Android – iphone style tabhost Как создать ссылку для всех мобильных устройств, которые открывают карты Google с маршрутом, начинающимся с текущего местоположения, определяющим данное место? Webview shouldOverrideUrlLoading работает в предыдущих версиях Android, за исключением 4.1.x jellybean Как проверить значения TextInput в реакции native? Как запустить команду терминала в приложении Android? Android NDK – поддерживает прямой ARM-код или просто Thumb Как установить имя перехода в заголовок панели инструментов?

Возможно ли иметь вложенные MultipartEntities или FormBodyPart в многостраничном POST?

Я пытаюсь сделать что-то следующий запрос POST сервера с использованием MultipartEntity:

parameters: {"parameter1"=>"parameter1", "parameter2"=>{"sub_parameter1"=>"sub_parameter1", "sub_parameter2"=>"sub_parameter2"}} 

В настоящее время я использую что-то вроде:

 multipartEntity.addPart("parameter1", new StringBody("parameter1")); FormBodyPart parameter2 = new FormBodyPart("parameter2", new StringBody("")); // It wouldn't allow a null ContentBody parameter2.addField("sub_parameter1", "sub_parameter1"); parameter2.addField("sub_parameter2", "sub_parameter2"); 

Однако субполя не несет. Я просто получаю:

 parameters: {"parameter1"=>"parameter1", "parameter2"=>""} 

Как создать вложенную структуру в элементах MultipartEntity или FormBodyPart, которые она содержит?

Solutions Collecting From Web of "Возможно ли иметь вложенные MultipartEntities или FormBodyPart в многостраничном POST?"

Как только вы увидите, как записи формы передаются по HTTP-соединению, вы поймете, что невозможно иметь что-либо, вложенное в многообразный запрос, а также с запросом, закодированным по URL-адресу.

Все очень просто. Запрос на получение многостраничной формы имеет формат:

 --- content-boundary --- Content-Disposition: form-data; name="form_data_name" [content (skipped)] --- content-boundary --- 

это оно. Есть поток отдельных записей формы данных в формате: [имя записи формы] -> [содержимое записи формы], которое повторяется для каждой записи в форме. Это не рекурсивно, поэтому не может быть никаких вложенных структур.

Источники:

  1. 17.13.4 Типы содержимого формы
  2. Интернет-сообщения RFC 2045

Рассмотрите возможность отправки json в тело запроса. Таким образом вы можете отправить все, что захотите.

Что-то вроде этого:

 MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart("selectedGroup", new StringBody(group)); reqEntity.addPart("selectedService", new StringBody(service.toString())); reqEntity.addPart("selectedTransformation", new StringBody(transformation.toString())); reqEntity.addPart("projectId", new StringBody(projectId.toString())); 

Проверьте exapmle 8 этой ссылки. Также exapmple 23 Пример сайта

Надеюсь, это поможет вам решить вашу проблему.

Почему вы не отправляете весь объект Json, а не публикуете каждое строковое значение объекта Json.

Перейдите по этой ссылке http://hmkcode.com/android-send-json-data-to-server/

У меня было аналогичное требование, и я решил настроить код на моей стороне сервера, чтобы удалить параметр 2, чтобы использовать MultipartEntity на стороне клиента. Он работал отлично.

 parameters: {"parameter1"=>"parameter1", "parameter2"=>{"sub_parameter1"=>"sub_parameter1", "sub_parameter2"=>"sub_parameter2"}} parameters: {"parameter1"=>"parameter1", "sub_parameter1"=>"sub_parameter1", "sub_parameter2"=>"sub_parameter2"}