2013-05-10 42 views
0

我需要能够根据从http出站端点返回的http响应代码执行某些操作。例如,如果我得到500错误或302重定向或200.我需要一种方法来评估500,302,200。我知道如何使用Choice-When,但不知道如何访问响应代码时髦或任何你的建议。骡 - 如何做一个选择/当基于http响应代码?

回答

7

你可以用下面的表达式HTTP响应代码HTTP出站端点之后:

#[message.inboundProperties['http.status']] 

同样,在Groovy脚本:

message.getInboundProperty('http.status') 
11

西巴是正确的,但还不够。默认情况下,如果在HTTP出站交互(即响应代码> = 400)中检测到客户端或服务器错误,Mule会将响应视为错误,并将中断流程执行并调用异常策略进行处理与错误。

为了让流程的其余部分(您的choice路由器)被调用,您需要在执行HTTP出站交互之前停用此行为。所以你需要这个:

<set-variable variableName="http.disable.status.code.exception.check" 
       value="true" /> 

之前你的HTTP出站端点。

+0

将这个烂摊子跟骡子在终止套接字连接过程? – EdC 2014-11-27 22:22:14

+0

的命名错误'returnException'方法的使用(应该是'throwException')在https://github.com/mulesoft/mule/blob/mule-3.x/transports/http/src/main/java/org/ mule/transport/http/HttpClientMessageDispatcher.java很难遵循,但似乎对于单向出站(即'doDispatch'),连接管理行为不会改变。对于'request-response'(即'doSend'),似乎Mule会保持出站连接的打开状态,即使在状态码不正确的情况下也是如此。它不应该是有害的,因为连接是在调度器中处理的,调度器是一个托管的池化对象。 – 2014-11-28 17:22:28

+0

我认为值得打开JIRA以便MuleSoft可以调查问题。 – 2014-11-28 19:16:42

相关问题