URL 中带有 @ 符号的 Mule HTTP 请求响应代码 400

Mule HTTP Request Response Code 400 with @ symbol in URL

** 问题收回**

我正在使用 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 访问 URL (http://hostname:8081/user/validate/john.doe@gmail.com),它工作正常。

我知道是 @ 符号导致了这个问题。对于没有 @ 符号的值,Mule 流工作正常。

请求中可能遗漏了什么?

感谢您的帮助

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>

URL 测试 - http://localhost:8081/Test/senthil.test%40gmail.com