2015-10-20 5 views
0

Я пытаюсь отправить данные JSON наплыва дб, используя следующий код:получение FileNotFoundException при отправке данных JSON с помощью Java

String url = "http://xx.x.xx.xx:8086/db/monitoring/check_1113?u=root&p=root"; 

URL obj = new URL(url); 
HttpURLConnection conn = (HttpURLConnection) obj.openConnection(); 

conn.setRequestProperty("Content-Type", "application/json"); 
conn.setDoOutput(true); 

conn.setRequestMethod("PUT"); 

//String userpass = "user" + ":" + "pass"; 
//String basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userpass.getBytes("UTF-8")); 
//conn.setRequestProperty ("Authorization", basicAuth); 

//String data = "{\"format\":\"json\",\"pattern\":\"#\"}"; 
System.out.println("Data to send: "+"[{\"name\": \"check_222\",\"columns\": [\"time\", \"sequence_number\", \"value\"],\"points\": [["+unixTime+", 1, \"122\"]]}]"); 
String data = "[{\"name\": \"check_333\",\"columns\": [\"time\", \"sequence_number\", \"value\"],\"points\": [["+14444444444+", 1, \"122\"]]}]"; 

OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream()); 
out.write(data); 
out.close(); 

new InputStreamReader(conn.getInputStream()); 

System.out.println("Data Sent"); 

Где xx.xx.xx.xx является IP сервера, где развернут приток и Я использую Ip.

Когда я делаю ручную завивку с этими данными (на локальном хосте), данные отправляются успешно. свернуться приводится ниже:

curl -X POST -d '[{"name": "check_223","columns": ["time", "sequence_number", "value"],"points": [[1445271004000,1,70.8880519867]]}]' 'http://localhost:8086/db/monitoring/series?u=root&p=root' 

Но когда я запускаю код для передачи данных с помощью программы Java разделяемой выше, я получаю следующее сообщение об ошибке:

java.io.FileNotFoundException: http://xx.x.xx.xx:8086/db/monitoring/check_1113?u=root&p=root 
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1834) 
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1439) 
at com.snapdeal.hadoop.monitoring.hdfs1.App.sendJsonDataToInflux(App.java:52) 
at com.snapdeal.hadoop.monitoring.hdfs1.App.main(App.java:89) 
[INFO - 2015-10-20T16:27:13.152Z] ShutdownReqHand - _handle - About to shutdown 

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

+0

Произошла некоторая отладка и выяснилось, что URL-адрес неверен. Исправил его и снова запустил программу. Ошибка FileNOtFound исчезла, но теперь я получаю ошибку 405, которая показана ниже. java.io.IOException: Сервер вернул код ответа HTTP: 405 для URL: –

ответ

0

Это должно быть относительно очевидно. Параметр 405 указывает, что HTTP-метод в запросе не поддерживается конечной точкой. Услуга, которую вы вызываете, не поддерживает метод PUT.

+0

спасибо. Я просто изменил метод запроса для публикации, и я работал. –

Смежные вопросы