跳到主要内容
版本:7.0.2

HTTP 示例

DeepSeek V3 中英对照 HTTP Samples

本节将通过几个示例来总结我们对 Spring Integration HTTP 支持的介绍。

Multipart HTTP 请求 — RestTemplate(客户端)与 Http 入站网关(服务器)

此示例展示了使用Spring的RestTemplate发送多部分HTTP请求并通过Spring Integration HTTP入站适配器接收请求是多么简单。我们创建一个MultiValueMap并用多部分数据填充它。RestTemplate会将其转换为MultipartHttpServletRequest来处理剩余工作(此处为双关语)。这个特定的客户端发送一个包含公司名称和图像文件(公司徽标)的多部分HTTP请求。以下清单展示了该示例:

RestTemplate template = new RestTemplate();
String uri = "http://localhost:8080/multipart-http/inboundAdapter.htm";
Resource s2logo =
new ClassPathResource("org/springframework/samples/multipart/spring09_logo.png");
MultiValueMap map = new LinkedMultiValueMap();
map.add("company", "SpringSource");
map.add("company-logo", s2logo);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(new MediaType("multipart", "form-data"));
HttpEntity request = new HttpEntity(map, headers);
ResponseEntity<?> httpResponse = template.exchange(uri, HttpMethod.POST, request, null);

这就是客户端所需的全部内容。

在服务器端,我们有以下配置:

<int-http:inbound-channel-adapter id="httpInboundAdapter"
channel="receiveChannel"
path="/inboundAdapter.htm"
supported-methods="GET, POST"/>

<int:channel id="receiveChannel"/>

<int:service-activator input-channel="receiveChannel">
<bean class="org.springframework.integration.samples.multipart.MultipartReceiver"/>
</int:service-activator>

<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>

'httpInboundAdapter'接收请求并将其转换为一个Message,其负载是一个LinkedMultiValueMap。然后我们在'multipartReceiver'服务激活器中解析该负载,如下例所示:

public void receive(LinkedMultiValueMap<String, Object> multipartRequest){
System.out.println("### Successfully received multipart request ###");
for (String elementName : multipartRequest.keySet()) {
if (elementName.equals("company")){
System.out.println("\t" + elementName + " - " +
((String[]) multipartRequest.getFirst("company"))[0]);
}
else if (elementName.equals("company-logo")){
System.out.println("\t" + elementName + " - as UploadedMultipartFile: " +
((UploadedMultipartFile) multipartRequest
.getFirst("company-logo")).getOriginalFilename());
}
}
}

您应该看到以下输出:

### Successfully received multipart request ###
company - SpringSource
company-logo - as UploadedMultipartFile: spring09_logo.png