我有一个Mule应用程序,它使用<http:request
连接器通过HTTPS调用外部API。当我在本地构建和部署我的应用程序时,调用工作正常。当我使用Mule应用程序发送的完全相同的有效负载对Postman调用相同的外部API时,调用工作正常。但是,当我将Mule应用程序部署到Cloudhub并发出请求时 - 我从外部API获得400响应。
这是我的流程:
<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"}
我无法复制我在本地实例的Cloudhub中看到的行为。与我正在制作的其他人打电话的唯一不同之处在于它是POST
请求。
答案 0 :(得分:1)
在大多数情况下,此错误与API自动发现未正确配置或损坏有关。如果在Mule应用程序上配置了API自动发现,则最佳解决方案是从Mule应用程序中删除该设置,通过再次启动该过程来检查是否已解决该错误,然后重新配置自动发现。
答案 1 :(得分:0)
奇怪的是,对此的解决方案是&#34;将其关闭再打开&#34;正如question I posted on the Mulesoft forum所建议的那样。我只是从Cloudhub中删除了应用程序并重新部署了它,一切都按预期工作。 Cloudhub内部非常奇怪的问题。希望Mulesoft能解决......