[Spring Boot]Rest服务调用远程Get、Post请求

pom

<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpclient</artifactId>
  <version>4.5.13</version>
</dependency>
<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpmime</artifactId>
  <version>4.5.13</version>
</dependency>

格外增加一个工具方法,处理JSON

<!--        HuTool工具库-->
<dependency>
  <groupId>cn.hutool</groupId>
  <artifactId>hutool-all</artifactId>
  <version>5.8.28</version>
</dependency>

config类

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;


/**
 * Rest服务
 * 便捷访问远程Http服务
 *
 * @author fir
 */
@Configuration
public class ResTemplateConfig {
    @Bean
    public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
        return new RestTemplate(factory);
    }

    @Bean
    public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
        HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
        //超时设置
        //ms
        factory.setReadTimeout(120000);
        //ms
        factory.setConnectTimeout(120000);
        return factory;
    }
}

业务类-Get方法调用

            log.info("[Http服务]调用中...");
            String url = "http://127.0.0.1:19900/com/real/date";

            //请求头处理
            HttpHeaders httpHeaders = new HttpHeaders();
            httpHeaders.add("Authorization", "token");

            // 请求参数构建
            HttpEntity<String> fromEntity = new HttpEntity<>(httpHeaders);


            MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
            params.add("name", "这是name");
            UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);
            URI uri = builder.queryParams(params).build().encode().toUri();

            try {
                ResponseEntity<String> responseEntity = restTemplate.exchange(uri, HttpMethod.GET, fromEntity, String.class);
                log.info("[Http服务]返回值:{}" , responseEntity.getBody());
                log.info("[Http服务]调用成功!");
            } catch (ResourceAccessException e) {
                log.info("[Http服务]调用失败,无法连接到服务器 {}", url);
            }

业务类-Post方法调用

import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.ResourceAccessException;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;
import java.util.HashMap;


/**
 * <p>
 * 网络信息数据获取 前端控制器
 * </p>
 *
 * @author fir
 */
@Slf4j
@RestController
@RequestMapping("/test")
public class TestController {

    @Resource
    private RestTemplate restTemplate;


    @GetMapping("/a")
    public String bodyList() {

        log.info("[Http服务]调用中...");
        String url = "http://127.0.0.1:22225/toReportAlarm";

        // 请求参数
        HashMap<String, Object> map = new HashMap<>();
        map.put("informList", "test");

        //请求头处理
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.add("Authorization", "token");
        httpHeaders.add("accept", "application/json");
        httpHeaders.add("Content-Type", "application/json");

        // 请求参数构建
        HttpEntity<String> fromEntity = new HttpEntity<>(JSONUtil.toJsonStr(map), httpHeaders);

        try {

            ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, fromEntity, String.class);
            log.info("[Http服务]返回值:" + responseEntity.getBody());
            log.info("[Http服务]调用成功!");
        } catch (ResourceAccessException e) {
            log.info("[Http服务]调用失败,无法连接到服务器 {}", url);
        }

        return null;
    }

}

相关推荐

  1. [Spring Boot]Rest服务调用远程Get、Post请求

    2024-07-13 17:18:06       21 阅读
  2. feign远程调用请求头设置参数

    2024-07-13 17:18:06       42 阅读
  3. SpringCloud微服务调用丢失请求

    2024-07-13 17:18:06       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 17:18:06       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 17:18:06       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 17:18:06       58 阅读
  4. Python语言-面向对象

    2024-07-13 17:18:06       69 阅读

热门阅读

  1. 今日科技圈最新时事新闻(2024年7月12日

    2024-07-13 17:18:06       21 阅读
  2. Leetcode刷题4--- 寻找两个正序数组的中位数 Python

    2024-07-13 17:18:06       21 阅读
  3. 网络安全那些梗

    2024-07-13 17:18:06       20 阅读
  4. lntroducing Machine Learning

    2024-07-13 17:18:06       21 阅读
  5. react学习——29react之useState使用

    2024-07-13 17:18:06       23 阅读
  6. MobaXterm使用

    2024-07-13 17:18:06       17 阅读