5

在我的 Spring Web 应用程序中,我需要向非 RESTful API 发出 HTTP 请求,并将响应正文解析为字符串(它是一维 CSV 列表)。

我以前用过RestTemplate,但这不是 RESTful 并且不能很好地映射到类。每当我“手动”实现这样的东西(例如使用HttpClient)时,我总会在以后发现 Spring 有一个实用程序类,它使事情变得更简单。

春天有什么东西可以“开箱即用”完成这项工作吗?

4

2 回答 2

4

如果您查看 RestTemplate 的来源,您会发现它在内部使用

java.net.URL

url.openConnection()

这是 Java 中进行 HTTP 调用的标准方式,因此您可以安全地使用它。如果春天会有一个“HTTP 客户端”实用程序,那么 RestTemplate 也会使用它。

于 2011-11-02T10:21:12.973 回答
2

我在内部使用带有 Spring 4.3 Core 的 Spring Boot,并找到了一种非常简单的方法来使用 OkHttpClient 发出 Http 请求和读取响应。这是代码

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
        }
于 2019-03-22T06:23:12.120 回答