由于找不到Spring Integration的JIRA项目,因此我在这里创建了一个问题,但我想它没有被跟踪... https://jira.spring.io/browse/INFRA-32
编码uri变量似乎有问题。我的流程以文件入站适配器开头。
使用以下代码,特殊字符为“。”或“-”将无法正确编码(每个字符都会以某种方式计为2)。
.transform(Files.toStringTransformer())
.handle(Http.outboundGateway(uri + "?text={text}")
.httpMethod(HttpMethod.GET)
.uriVariable("text", "payload")
.expectedResponseType(String.class))
将Files.toStringTransofmer更改为“。”的以下作品。和“-”,但不适用于变音符号(即ü)。 Umlauts将以2个字符的形式发送:
.transform(Files.toByteArrayTransformer())
.transform(new ObjectToStringTransformer())
.handle(Http.outboundGateway(uri + "?text={text}")
.httpMethod(HttpMethod.GET)
.uriVariable("text", "payload")
.expectedResponseType(String.class))
在以上两个示例中添加UTF-8字符集并没有任何改变(我的默认字符集还是UTF-8)。
将以上内容更改为以下代码可以解决此问题:
.<File>handle((p, h) -> {
try
{ String body = FileUtils.readFileToString(p, "UTF-8").substring(10); RestTemplate restTemplate = new RestTemplate(); String annotationUrl = uri + "?text={text}
";
ResponseEntity<String> response = restTemplate.getForEntity(annotationUrl, String.class, body);
return response.getBody();
} catch (Exception e)
{ throw new RuntimeException("Exception while parsing text body document", e); }
})
我正在使用以下版本:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
知道是错误还是功能? ;)