2015-04-27 4 views
1

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

java.io.IOException: Сервер вернул код ответа HTTP: 400 для URL: http://localhost:8000/api/v0/contacts/2 в sun.net.www.protocol.http.HttpURLConnection.getInputStream (Unknown Source)

я могу вызовите 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; 
} 

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

+1

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

ответ

0

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