Ошибка Android: MultipartEntity, запрос, отправленный клиентом, был синтаксически неправильным

Я могу отправить файл песни (mp3 / wav) и некоторые данные через безопасный веб-сервис. Я использую MultipartEntity для запроса HttpPost. Но когда я выполняю его через HttpClient, сервер отвечает на эту ошибку

HTTP Status 400 – Bad Тип запроса: Сообщение о статусе: Неверный запрос. Запрос, отправленный клиентом, был синтаксически неправильным (Bad Request).

Но сервис работает очень хорошо, если мы его вызываем из своего веб-интерфейса. пожалуйста помоги

Его код

HttpClient httpclient = new DefaultHttpClient(); HttpPost postRequest = new HttpPost(); try { MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart("email", new StringBody("test@testmail.com")); reqEntity.addPart("password", new StringBody("123")); reqEntity.addPart("title", new StringBody("My new song")); reqEntity.addPart("musicData", new FileBody(new File(FilePath))); // FIlePath is path to file and contains correct file location postRequest.setEntity(reqEntity); postRequest.setURI(new URI(ServiceURL)); HttpResponse response = httpclient.execute(postRequest); } catch (URISyntaxException e) { Log.e("URISyntaxException", e.toString()); } 

Я также включил apache-mime4j, httpclient, httpcore и httpmime jars для MultipartEntity.

Это привязка HTML-страницы для Сервиса. Введите описание изображения здесь

Solutions Collecting From Web of "Ошибка Android: MultipartEntity, запрос, отправленный клиентом, был синтаксически неправильным"

Попробуйте удалить метод setURI и передать URL-адрес при создании объекта HttpPost следующим образом. Это сработало для меня ( подробнее здесь ).

 HttpClient httpclient = new DefaultHttpClient(); HttpPost postRequest = new HttpPost(ServiceURL); try { MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart("email", new StringBody("test@testmail.com")); reqEntity.addPart("password", new StringBody("123")); reqEntity.addPart("title", new StringBody("My new song")); reqEntity.addPart("musicData", new FileBody(new File(FilePath))); postRequest.setEntity(reqEntity); HttpResponse response = httpclient.execute(postRequest); } catch (URISyntaxException e) { Log.e("URISyntaxException", e.toString()); } 

Кажется, что заголовок запроса неверен, эта проблема может возникнуть, если вы используете другой протокол Auth или верхний / нижний регистр или просто неправильные вещи в заголовке, который не может обрабатывать серверная сторона.

Не тратьте время на то, чтобы попробовать разные комбинации. Есть HTTP-инструменты HTTP, доступные для HTTP, с помощью которых вы можете отслеживать запросы и ответы, которые вы получаете. HTTP-анализатор скачать пробную версию

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

Теперь сравните рабочий и нерабочий запрос, который вы, безусловно, сможете усугубить проблему, может ли это проблема заголовка или какая-либо проблема, связанная с проверкой подлинности.