Я пытаюсь получить данные из API через HttpURLConnection но получать IOException с сообщением:HttpURLConnection возвращает -1 в качестве кода ответа
Invalid Http response
Однако, когда я вставить запрос URL в браузер я» m получить правильный ответ с 200 в качестве кода ответа. Вот код, который не подходит:
public static String sendRequest(String url) throws IOException {
HttpURLConnection urlConnection = null;
String out = null;
System.setProperty("http.keepAlive", "false");
try {
URL serverAddress = new URL(url);
urlConnection = (HttpURLConnection) serverAddress.openConnection();
urlConnection.setReadTimeout(TIME_OUT_LENGTH);
urlConnection.setRequestMethod(REQUEST_METHOD_GET);
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
out = Connection.readStream(in);
} catch (IOException e) {
System.out.println(e.getCause());
InputStream is = new BufferedInputStream(urlConnection.getErrorStream());
out = Connection.readStream(is);
} finally {
urlConnection.disconnect();
System.out.println(out);
return out;
}
}
private static String readStream(InputStream in) throws IOException {
String line;
BufferedReader r = new BufferedReader(new InputStreamReader(in));
StringBuilder sb = new StringBuilder();
while((line = r.readLine()) != null)
sb.append(line);
return sb.toString();
}
Кто-нибудь видит, что я делаю неправильно?
--- EDIT ----
Стек след:
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1341)
at java.net.URL.openStream(URL.java:1037)
at com.urhola.cheddar.connection.Connection.sendRequest(Connection.java:33)
at com.urhola.cheddar.request.Request.execute(Request.java:63)
at com.urhola.cheddar.request.LineInformationRequest.execute(LineInformationRequest.java:36)
at tester.Client.main(Client.java:54)