RestTemplate实现HttpRequest请求

直接撸代码

@PostMapping("/certificate")
    public String certificate(String verSummary) throws JsonProcessingException {
        String url = "http://10.xx.xxx.xx:xxxx/SignServer/Sign";
        List list = new ArrayList();
        list.add(verSummary);

        Map req = new HashMap();
        req.put("VerSummary",list);
        String json = this.ObjectToJson(req);
        System.out.println("json is " + json);


        HttpHeaders headers = new HttpHeaders();
        headers.set("Content-Type","application/json");
        HttpEntity httpEntity = new HttpEntity(json,headers);
        ResponseEntity<Map> res = this.restTemplate.exchange(url, HttpMethod.POST, httpEntity, Map.class);

        //ResponseEntity<Map> res = restTemplate.postForEntity( url, httpEntity , Map.class );
        Map cerResult = res.getBody();
        System.out.println("cerResult "+cerResult);
        String resultCode = (String)cerResult.get("ResultCode");
        return resultCode;
    }

其中,object转json的实现如下:

private final static ObjectMapper mapper = new ObjectMapper();
 
public String ObjectToJson(Object o) throws JsonProcessingException {
        ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
        String json = ow.writeValueAsString(o);
        return json;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RestTemplate 是一个 Spring 框架中的类,可以用于发送 HTTP 请求。在使用 RestTemplate 时,我们可能需要设置自定义的请求头,以递自定义信息或实现特定功能。以下是 RestTemplate 设置请求头的方法: 1. 使用 HttpHeaders 类添加请求头 可以通过创建 HttpHeaders 对象,然后添加请求头信息来设置请求头。例如: HttpHeaders headers = new HttpHeaders(); headers.set("Authorization", "Basic " + encodeCredentials("username", "password")); HttpEntity<String> entity = new HttpEntity<>(headers); 在这个例子中,我们设置了一个名为 Authorization 的请求头,值为经过 Base64 编码的用户名和密码。这个请求头用于进行身份认证。 2. 使用 RestTemplate 的 exchange 方法设置请求RestTemplate 的 exchange 方法可以接收一个 RequestEntity 对象,该对象包含了请求体和请求头。例如: HttpHeaders headers = new HttpHeaders(); headers.set("Accept", MediaType.APPLICATION_JSON_VALUE); RequestEntity<Object> requestEntity = new RequestEntity<>(headers, HttpMethod.GET, new URI(url)); ResponseEntity<String> response = restTemplate.exchange(requestEntity, String.class); 在这个例子中,我们设置了一个名为 Accept 的请求头,值为 application/json,用于指定预期的响应类型为 JSON。 3. 使用 RestTemplate 的 interceptors 设置全局请求RestTemplate 的 interceptors 是一组拦截器,可以在发送请求前或收到响应后对请求进行处理。通过扩展 ClientHttpRequestInterceptor,我们可以定义一个拦截器,在每次请求中添加自定义请求头。例如: public class CustomHeaderInterceptor implements ClientHttpRequestInterceptor { @Override public ClientHttpResponse intercept( HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException { HttpHeaders headers = request.getHeaders(); headers.add("Custom-Header", "foo"); return execution.execute(request, body); } } RestTemplate restTemplate = new RestTemplateBuilder() .additionalInterceptors(new CustomHeaderInterceptor()) .build(); 在这个例子中,我们定义了一个名为 Custom-Header 的请求头,值为 foo,并将这个拦截器添加到 RestTemplate 中。每次请求时都会自动添加这个请求头。 总而言之,RestTemplate 可以通过 HttpHeaders 类、exchange 方法或拦截器实现自定义请求头的设置,以满足各种场景下的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值