2017-01-24 2 views
0

** Вопрос забраны **Mule HTTP код запроса отклика 400 с символом @ в URL

Я использую HTTP: запрос компонент в Mule 3.8 -

<http:request config-ref="httpRequestConfig" host="hostname" port="8081" path="validate/[email protected]" 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) 

Если у меня есть доступ к URL-адресу (http://hostname:8081/user/validate/[email protected]) из Chrome, он работает нормально.

Я знаю, что это символ @, который является причиной проблемы. Для значения без символа @ поток Mule отлично работает.

Что я мог отсутствовать по просьбе?

Спасибо за помощь

+0

Мой плохо! В моем потоке была стратегия исключения-исключения, которая меняла ответ от службы. Поток Мула действительно вел себя так же, как и то, как он ведет себя из Chrome. –

ответ

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> 

URL для теста - http://localhost:8081/Test/senthil.test%40gmail.com

+0

Спасибо за ответ. Но, я получаю ту же ошибку с% 40 вместо @. –

+0

Отредактирован мой ответ выше –

Смежные вопросы