Mule-如何根据http响应代码进行选择/何时选择?

Mule-如何根据http响应代码进行选择/何时选择?,http,mule,endpoint,Http,Mule,Endpoint,我需要能够根据从http出站端点返回的http响应代码执行某些操作。例如,如果我得到一个500错误或302重定向或200。我需要一种评估500302200的方法。我知道何时使用Choice,但不知道如何使用groovy或您建议的任何方法访问响应代码。您可以在HTTP出站端点之后使用以下表达式获取HTTP响应代码: #[message.inboundProperties['http.status']] 同样,在Groovy脚本中: message.getInboundProperty('http

我需要能够根据从http出站端点返回的http响应代码执行某些操作。例如,如果我得到一个500错误或302重定向或200。我需要一种评估500302200的方法。我知道何时使用Choice,但不知道如何使用groovy或您建议的任何方法访问响应代码。

您可以在HTTP出站端点之后使用以下表达式获取HTTP响应代码:

#[message.inboundProperties['http.status']]
同样,在Groovy脚本中:

message.getInboundProperty('http.status')

塞巴是对的,但这还不够

默认情况下,如果在HTTP出站交互中检测到客户端或服务器错误(即响应代码>=400),Mule将把响应视为错误,并中断流执行并调用异常策略来处理错误

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

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


在您的HTTP出站端点之前。

这会干扰Mule终止套接字连接的过程吗?在中使用命名错误的
returnException
方法(应该是
ThroweException
)很难理解,但对于
单向出站(即
doDispatch
)连接管理行为不会改变。对于
请求-响应
(即
doSend
),Mule似乎会保持出站连接打开,即使状态代码不正确。不过,这不应该是有害的,因为连接是在dispatcher中处理的,dispatcher是一个托管池对象。我认为值得打开一个JIRA,以便MuleSoft可以调查问题。现在情况不同了,您可以使用状态代码设置,并说允许使用200404或200500,或是带有“.”的范围,不管你需要什么,这样你就可以允许“坏”状态通过,要么是少数,要么是全部,然后用一个选择来捕获它们。