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
** 问题收回**
我正在使用 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