Самый простой способ сделать HTTP-запрос в Spring - PullRequest
2 голосов
/ 01 ноября 2011

В моем веб-приложении Spring мне нужно сделать HTTP-запрос к API без RESTful и проанализировать тело ответа обратно как строку (это список CSV с одним измерением).

Я использовал RestTemplate раньше, но это не RESTful и не отображается на классы. Всякий раз, когда я реализую что-то подобное «вручную» (например, используя HttpClient), я неизменно обнаруживаю позже, что Spring имеет служебный класс, который делает вещи намного проще.

Есть ли в Spring что-нибудь, что выполнит эту работу "из коробки"?

Ответы [ 2 ]

3 голосов
/ 02 ноября 2011

Если вы посмотрите на источник RestTemplate, вы обнаружите, что внутри он использует

java.net.URL

и

url.openConnection()

, который является стандартным способом Java для выполнения HTTP-вызовов,Вы можете использовать это.Если бы весной была утилита «HTTP-клиент», то RestTemplate также использовал бы ее.

1 голос
/ 22 марта 2019

Я использую Spring Boot с Spring 4.3 Core внутри и нашел очень простой способ сделать Http-запрос и прочитать ответы с помощью OkHttpClient.Вот код

Request request = new Request.Builder().method("PUT", "some your request body")
            .url(YOUR_URL)
            .build();
        OkHttpClient httpClient = new OkHttpClient();
        try
        {
            Response response = httpClient.newBuilder()
            .readTimeout(1, TimeUnit.SECONDS)
            .build()
            .newCall(request)
            .execute();
            if(response.isSuccessful())
            {
                // notification about succesful request
            }
            else
            {
                // notification about failure request
            }
        }
        catch (IOException e1)
        {
            // notification about other problems
        }
...