You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用RestTemplate发送含多对象请求体及认证头的请求

使用RestTemplate发送带指定请求体与请求头的POST请求

步骤说明与代码示例

1. 实例化各层级实体类

假设你的实体类结构与请求JSON完全对应:

  • 顶层类(如命名为ApiRequest):包含Request类型的request属性
  • Request类:包含Header类型的header和Payload类型的payload属性
  • Header类:包含correlationId、appId字段
  • Payload类:包含leadId、applicationNo、proposalNo、policyNo、issuanceDt、docName、docType字段

直接创建并填充实体对象:

// 构建Header
Header header = new Header();
header.setCorrelationId("Test");
header.setAppId("12345");

// 构建Payload
Payload payload = new Payload();
payload.setLeadId("12345");
payload.setApplicationNo("");
payload.setProposalNo("P123");
payload.setPolicyNo("100");
payload.setIssuanceDt("01-06-2022");
payload.setDocName("ABCD.pdf");
payload.setDocType("Proposal Form");

// 构建Request
Request request = new Request();
request.setHeader(header);
request.setPayload(payload);

// 构建顶层请求对象
ApiRequest apiRequest = new ApiRequest();
apiRequest.setRequest(request);

2. 配置请求头

创建HttpHeaders对象,指定Content-Type并添加username、password请求头:

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("username", "你的实际用户名");
headers.add("password", "你的实际密码");

3. 封装请求实体

将请求体与请求头包装为HttpEntity:

HttpEntity<ApiRequest> requestEntity = new HttpEntity<>(apiRequest, headers);

4. 发送POST请求

通过RestTemplate发送请求,这里以postForObject为例(如需响应头信息可改用postForEntity):

// 初始化RestTemplate(若已通过Spring容器注入可直接使用)
RestTemplate restTemplate = new RestTemplate();

// 目标接口URL
String targetUrl = "https://你的目标接口地址";

// 发送请求并接收响应,替换ResponseType为实际响应实体类
ResponseType response = restTemplate.postForObject(targetUrl, requestEntity, ResponseType.class);

注意事项

  • 若实体类字段名与JSON键名不匹配,需用@JsonProperty注解指定映射关系
  • 若日期字段为LocalDate类型,需配置RestTemplate的ObjectMapper以支持dd-MM-yyyy格式序列化:
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
objectMapper.setDateFormat(new SimpleDateFormat("dd-MM-yyyy"));

restTemplate.getMessageConverters().stream()
    .filter(converter -> converter instanceof MappingJackson2HttpMessageConverter)
    .forEach(converter -> ((MappingJackson2HttpMessageConverter) converter).setObjectMapper(objectMapper));

内容的提问来源于stack exchange,提问作者Abhishikth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 21:54:16