Java: выполнение вызова HTTP REST GET без чтения ответа

Francesco Marchioni спросил: 11 марта 2019 в 07:27 в: java


Я нахожусь в сценарии, когда я отправляю HTTP GET на сервер JVM. Цель этого HTTP GET состоит в том, чтобы остановить удаленную JVM (которая будет перезапущена автоматически, так как она находится в Kubernetes Pod).

Я заметил, что при отправке запроса с помощью cURL он работает должным образом:

$ curl namespace.192.168.42.204.nip.io/rest

Однако при отправке HTTP GET в Java происходит сбой при попытке прочитать ответ, который является нулевым:

private String sendGet(String url) throws Exception {    URL obj = new URL(url);
    HttpURLConnection con = (HttpURLConnection) obj.openConnection();    // optional default is GET
    con.setRequestMethod("GET");    int responseCode = con.getResponseCode();    System.out.println("Response Code : " + responseCode);    BufferedReader in = new BufferedReader(
            new InputStreamReader(con.getInputStream()));
    String inputLine;
    StringBuffer response = new StringBuffer();    while ((inputLine = in.readLine()) != null) {
        response.append(inputLine);
    }    in.close();    return "SUCCESS";}

На самом деле, когда я пытаюсь прочитать responseCode, создается исключение:

java.net.UnknownHostException: namespace.192.168.42.204.nip.io/rest
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
    at sun.net.www.http.HttpClient.New(HttpClient.java:339)
    at sun.net.www.http.HttpClient.New(HttpClient.java:357)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1220)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1156)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:984)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)

возможно ли эмулировать поведение cURL в Java? Было бы необходимо отправить запрос GET без чтения ответа. Знаете ли вы, как это сделать на Java?


0 ответов