我的端点是/mz/api/mot/pol/re/pt?Output=1|920222|R1205200130|Success|
我正在运行于Netty的Spring Boot上使用网关应用程序
并且面对下面的异常,
java.lang.IllegalArgumentException: Illegal character in query at index 46:
at java.net.URI.create(URI.java:852) ~[na:1.8.0_242]
at reactor.netty.http.HttpOperations.resolvePath(HttpOperations.java:300) ~[reactor-netty-0.9.4.RELEASE.jar:0.9.4.RELEASE]
at reactor.netty.http.server.HttpServerOperations.<init>(HttpServerOperations.java:128) ~[reactor-netty-0.9.4.RELEASE.jar:0.9.4.RELEASE]
at reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:157) ~[reactor-netty-0.9.4.RELEASE.jar:0.9.4.RELEASE]
at
[同样的错误也发生在Tomcat中,我通过设置relaxedQueryChars
属性来解决。请提出如何做到这一点。预先感谢。
您必须将查询字符串编码为netty。 “ |”将成为%7C
所以:/mz/api/mot/pol/re/pt?Output=1%7C920222%7CR1205200130%7CSuccess
成为:`/ mz / api / mot / pol / re / pt?输出= 1%7C920222%7CR1205200130%7CS成功
[如果您可以控制客户端,则有很多工具可以为您对该字符串进行URL编码。
另请参见:https://docs.oracle.com/javase/8/docs/api/java/net/URLEncoder.html