**回收问题**
我正在使用Mule 3.8中的HTTP:Request组件 -
<http:request config-ref="httpRequestConfig" host="hostname" port="8081" path="validate/john.doe@gmail.com" method="GET" doc:name="HTTP Request" />
HTTP请求配置如下所示 -
<http:request-config name="httpRequestConfig" basePath="user" doc:name="HTTP Request Configuration" />
这导致响应代码为400 -
Root Exception stack trace:
org.mule.module.http.internal.request.ResponseValidatorException: Response code 400 mapped as failure.
at org.mule.module.http.internal.request.SuccessStatusCodeValidator.validate(SuccessStatusCodeValidator.java:37)
at org.mule.module.http.internal.request.DefaultHttpRequester.validateResponse(DefaultHttpRequester.java:356)
at org.mule.module.http.internal.request.DefaultHttpRequester.innerProcess(DefaultHttpRequester.java:344)
at org.mule.module.http.internal.request.DefaultHttpRequester.processBlocking(DefaultHttpRequester.java:217)
如果我从Chrome访问网址(http://hostname:8081/user/validate/john.doe@gmail.com),则可以正常使用。
我知道导致问题的是@符号。对于没有@符号的值,Mule流程可以正常工作。
请求中我可能缺少什么?
感谢您的帮助
答案 0 :(得分:1)
必须为特殊字符编码URL。对于您的情况,将@字符替换为%{40},如此http://hostname:8081/user/validate/john.doe%40gmail.com
它对我有用,这是我的代码。
<http:listener-config port="8081" name="config" host="0.0.0.0" />
<flow name="test">
<http:listener path="/Test/{emailAddress}" config-ref="config" />
<logger level="INFO" message="#[message.inboundProperties.'http.uri.params'.emailAddress]"/>
</flow>
要测试的网址 - http://localhost:8081/Test/senthil.test%40gmail.com