2016-02-29 50 views
1

我有一个Mule应用程序,它使用<http:request连接器通过HTTPS调用外部API。当我在本地构建和部署我的应用程序时,通话正常。当我使用Mule应用程序发送的完全相同的有效载荷对同一个外部API进行邮差调用时,调用工作正常。但是,当我将Mule应用程序部署到Cloudhub并发出请求时 - 我从外部API获得400响应。Mule HTTPS POST请求在部署到Cloudhub时不起作用

这里是我的流程:

<http:request-config name="mambuRequestConfiguration" protocol="HTTPS" doc:name="HTTP Request Configuration"> 
    <http:basic-authentication username="${mambu.username}" password="${mambu.password}" preemptive="true" /> 
    <tls:context> 
     <tls:key-store type="jks" path="keystore.jks" alias="${keystore.alias}" keyPassword="${keystore.keypassword}" password="${keystore.password}" /> 
    </tls:context> 
</http:request-config> 

<flow name="createClientDepositAccount"> 
    <dw:transform-message metadata:id="412fd434-12bb-47a3-9605-9bfc1d9fec46" doc:name="Transform Message"> 
     <dw:set-payload><![CDATA[%dw 1.0 
%output application/json 
--- 
{ 
savingsAccount: { 
    accountHolderKey: payload.clientKey, 
    accountHolderType: "CLIENT", 
    productTypeKey: payload.productKey, 
    name: payload.clientProductName, 
    accountType: payload.accountType, 
    accountState: payload.accountState, 
    interestRate: payload.interestRate 
} 
}]]></dw:set-payload> 
    </dw:transform-message> 
    <http:request config-ref="mambuRequestConfiguration" path="${mambu.deposit.path}" method="POST" host="${mambu.host}" port="${mambu.port}" doc:name="Mambu: Create Client Deposit Account"> 
     <http:success-status-code-validator values="0..599"/> 
    </http:request> 
    <dw:transform-message metadata:id="49f1231f-485f-433c-82c4-3d83856ac442" doc:name="Transform Message"> 
     <dw:set-payload><![CDATA[%dw 1.0 
%output application/json 
--- 
{ 
message: "Account created successfully", 
key: payload.savingsAccount.encodedKey 
}]]></dw:set-payload> 
    </dw:transform-message> 
</flow> 

我打电话给外部服务是Mambu,云银行平台。我在我的应用程序中有许多其他流程,都会向其他各种Mambu API发出GET请求 - 所有工作都正常(所有GET请求也通过HTTPS)。我从Mambu得到的响应是400与有效载荷:

{"returnCode":3,"returnStatus":"INVALID_API_OPERATION"}

相关链接到Mambu文档是herehere

我无法复制我在本地实例的Cloudhub中看到的行为。唯一不同的是这个电话给我正在做的其他人,这是一个POST请求。

回答

0

奇怪的是,对此的解决方案是“关闭并再次打开”,如question I posted on the Mulesoft forum上建议的那样。我只是从Cloudhub中删除了该应用程序并重新部署了它,并且所有内容都按预期工作。在Cloudhub中,看起来很奇怪的问题。希望Mulesoft能够解决...

1

在大多数情况下,这个错误与API自动发现被错误地配置或损坏有关。如果在Mule应用程序上配置了API自动发现,最好的解决方案是从Mule应用程序中删除该设置,通过再次启动该过程来检查错误是否已解决,然后重新配置自动发现。