Java Put-Request возвращает 400 Bad Request

Я пытаюсь выполнить запрос на размещение против написанного мной rest-api, но он всегда возвращает 400-Bad Request.

java.io.IOException: сервер вернул код ответа HTTP: 400 для URL-адреса: http://localhost:8000/api/v0/contacts/2 на sun.net.www.protocol.http.HttpURLConnection.getInputStream (неизвестный источник)

Я могу вызвать URL-адрес с клиентским плагином firefox-rest, а также с другим угловым клиентом, поэтому я предполагаю, что что-то неправильно настроил в своем java-коде.

Сервер всегда что-то возвращает, поэтому я не знаю, почему он падает, когда я пытаюсь получить входной поток.

protected String put(String path, String parameters)
        throws IOException {

    HttpURLConnection connection = getConnection(path, "PUT", parameters);

    OutputStreamWriter outputWriter = new OutputStreamWriter(
            connection.getOutputStream());

    outputWriter.write(parameters);
    outputWriter.flush();
    outputWriter.close();

    InputStream is = connection.getInputStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    String response = reader.readLine();
    while(response != null){
        response += reader.readLine();
    }
    reader.close();

    return response;
}


private HttpURLConnection getConnection(String path, String method,String params) throws MalformedURLException, IOException,
        ProtocolException {
    URL url = new URL(this.api + path);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setDoOutput(true);
    connection.setDoInput(true);
    connection.setUseCaches(false);
    connection.setRequestMethod(method);
    connection.setRequestProperty("Content-Length",
            String.valueOf(params.length()));
    return connection;
}

Извините за плохой английский, это не мой родной язык.


person cassidy    schedule 27.04.2015    source источник
comment
Мы не сможем помочь, если не знаем, какое приложение работает на сервере (Tomcat, Spring Boot, Dropwizard) и не видим ваш внутренний код. 400 может быть связано с тем, что у вашего клиента отсутствует Content-Type, но это всего лишь предположение.   -  person wonderb0lt    schedule 27.04.2015


Ответы (1)


Я сделал ipconfig в командной строке, и он показал 192.168.1.3. я изменил его вместо localhost в приложении для Android, и теперь я могу получить доступ к локальному веб-серверу.

person Ajay Takur    schedule 15.08.2015