Подтвердить что ты не робот

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

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

Состояние HTTP 400 - плохой запрос тип: отчет о состоянии сообщение: Bad Request Запрос, отправленный клиентом, был синтаксически неправильным (Bad Request).

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

его код

HttpClient httpclient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost();
        try {
            MultipartEntity reqEntity = new MultipartEntity();

            reqEntity.addPart("email", new StringBody("[email protected]"));
            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-привязка для службы. enter image description here

4b9b3361

Ответ 1

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

HttpClient httpclient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(ServiceURL);
try {
    MultipartEntity reqEntity = new MultipartEntity();

    reqEntity.addPart("email", new StringBody("[email protected]"));
    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());
} 

Ответ 3

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

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

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