2017-01-24 7 views
0

는 ** 상담자는 HTTP를 사용하고뮬 HTTP 요청 응답 코드 (400)는

** 다시 촬영 이 -

<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/[email protected])에 액세스하면 올바르게 작동합니다.

@ 기호가 문제의 원인임을 알고 있습니다. @ 심볼이없는 값의 경우, 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

위 내 대답 편집 –