spring - 如何从 spring boot Controller 向另一台服务器执行 http 请求

标签 spring http get-request

我想从我在 localhost:80 上托管的 spring boot 应用程序在 localhost:80 上托管的服务器上执行获取请求(例如,但可以是每个主机)。

例如,我想从我的 spring 应用程序中获取托管在 locahost:80/image.jpg 上的图像。我该如何处理?

最佳答案

您可以为此使用 RestTemplate。

        RestTemplate restTemplate = new RestTemplate();

        String uri = localhost:80; // or any other uri

        HttpHeaders headers = new HttpHeaders();
        headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
        headers.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36");

        HttpEntity<String> entity = new HttpEntity<>("parameters", headers);
        ResponseEntity<?> result =
                restTemplate.exchange(uri, HttpMethod.GET, entity, returnClass);
        return result.getBody();

如果你想获取图片,那么使用下面的方法:

String url = "http://img.championat.com/news/big/l/c/ujejn-runi_1439911080563855663.jpg";
byte[] imageBytes = restTemplate.getForObject(url, byte[].class);
Files.write(Paths.get("image.jpg"), imageBytes);

您还需要在应用程序配置中配置 ByteArrayHttpMessageConverter:

@Bean
public RestTemplate restTemplate(List<HttpMessageConverter<?>> messageConverters) {
    return new RestTemplate(messageConverters);
}

@Bean
public ByteArrayHttpMessageConverter byteArrayHttpMessageConverter() {
    return new ByteArrayHttpMessageConverter();
}

关于spring - 如何从 spring boot Controller 向另一台服务器执行 http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67984754/

相关文章:

node.js - Angular 2 SimpleChanges 对象在第一次 npm 启动时抛出错误

c# - Request.Url.GetLeftPart(UriPartial.Authority) 在 https 站点上返回 http

python - 在Python中解析HTML数据

java - 容器中具有超过 1 个 CXF 应用程序的 CXF InstrumentationManagerImpl bean

java - 如何在分页中显示有限的页面链接?

rest - 带有请求正文的读取端点的 HTTP 动词

java - 对网站的 get 请求返回错误

python - 将 GET 请求中的 URL 发送到 Google App Engine 上的 Python 服务器

java - 如何在Spring boot Web应用程序方法的这个测试用例中省略NullPointerException?

java - Hibernate 查询 v 数据库函数