我正在开发一个Spring Boot应用程序

我需要向外部服务提出请求,这个服务既陈旧又不合理。该请求采用HTTP GET(或POST)调用的形式,但是有效载荷(即xml内容)需要作为查询参数传递。例如,

GET http://ill-service.com/plain.cgi?XML_DATA=<request attribute="attributeValue"><content contentAttribute="plain"/></request>


当然,查询参数XML_DATA的值需要进行URL编码,通常情况下,遵循RFC 3986(参见http://www.ietf.org/rfc/rfc3986.txt),Spring boot的RestTemplate可以很好地工作。

除此之外,在此RFC允许的范围内,在参数值中保留了'/'和'='字符,这给了我以下查询:

GET http://ill-service.com/plain.cgi?XML_DATA=%3Crequest%20attribute=%22attributeValue%22%3E%3Ccontent%20contentAttribute=%22plain%22/%3E%3C/request%3E


完美地说,这会很好,但是您还记得我说过我要致电的服务构思不当吗?在另一个世界中,它需要具有XML_DATA URL编码的完整内容。换句话说,它需要以下查询:

GET http://ill-service.com/plain.cgi?XML_DATA=%3Crequest%20attribute%3D%22attributeValue%22%3E%3Ccontent%20contentAttribute%3D%22plain%22%2F%3E%3C%2Frequest%3E%0A


我对如何指导其余模板或正在使用的UriComponentBuilder颇为迷惑。任何帮助将不胜感激

最佳答案

也许你可以使用spring的UriUtils

07-24 14:12