Как преобразовать простой вызов Curl в Java HttpURLConnection - PullRequest
0 голосов
/ 01 ноября 2018

Простой вызов curl: curl https://api.github.com/search/repositories\?q\=reactive

Что я сейчас пытаюсь сделать на Java

                URL url = new URL("https://api.github.com/search/repositories\\?q\\=reactive");
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setRequestMethod("GET");
    con.setRequestProperty("Content-Type", "application/json");
    con.setConnectTimeout(5000);
    con.setReadTimeout(5000);

    int isError = con.getResponseCode();
    System.out.println("Error code is " + isError);

    InputStream error = con.getErrorStream();

    System.out.println("Error is " + error.toString() + " \n");

    BufferedReader in = new BufferedReader(
        new InputStreamReader(con.getErrorStream()));
    String inputLine;
    StringBuffer content = new StringBuffer();
    while ((inputLine = in.readLine()) != null) {
        content.append(inputLine);
    }
    System.out.println("Error: " + content.toString());

Код ошибки: 404

Сообщение об ошибке: Error: {"message":"Not Found","documentation_url":"https://developer.github.com/v3"}

Почему бы его не найти, когда я буду искать его таким образом?

Спасибо!

1 Ответ

0 голосов
/ 01 ноября 2018

URL, который вы используете в java-коде, неверен с escape-символами, используемыми для curl. Удалите escape-символы и используйте URL https://api.github.com/search/repositories?q=reactive:

public static void main(String[] args) throws IOException {
        URL url = new URL("https://api.github.com/search/repositories?q=reactive");
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setRequestMethod("GET");
        con.setRequestProperty("Content-Type", "application/json");
        con.setConnectTimeout(5000);
        con.setReadTimeout(5000);

        System.out.println(con.getResponseMessage());
}

Выход:

OK
...