Mule HTTPS POST 请求在部署到 Cloudhub 时不起作用
Mule HTTPS POST request not working when deployed to Cloudhub
我有一个 Mule 应用程序,它使用 <http:request
连接器通过 HTTPS 调用外部 API。当我在本地构建和部署我的应用程序时,调用工作正常。当我使用我的 Mule 应用程序发送的完全相同的负载向同一个外部 API 发出 Postman 调用时,调用工作正常。但是,当我将 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
请求。
奇怪的是,question I posted on the Mulesoft forum 上建议的解决方案是 "turn it off and on again"。我只是从 Cloudhub 中删除了该应用程序并重新部署它,一切都按预期进行。从外观上看,Cloudhub 中存在非常奇怪的问题。希望 Mulesoft 能够解决...
在大多数情况下,此错误与 API 自动发现配置不当或损坏有关。如果API Mule 应用程序配置了自动发现,最好的解决方案是从Mule 应用程序中删除设置,通过重新启动进程检查错误是否已解决,然后重新配置自动发现。
我有一个 Mule 应用程序,它使用 <http:request
连接器通过 HTTPS 调用外部 API。当我在本地构建和部署我的应用程序时,调用工作正常。当我使用我的 Mule 应用程序发送的完全相同的负载向同一个外部 API 发出 Postman 调用时,调用工作正常。但是,当我将 Mule 应用程序部署到 Cloudhub 并发出请求时 - 我从外部 API.
这是我的流程:
<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
请求。
奇怪的是,question I posted on the Mulesoft forum 上建议的解决方案是 "turn it off and on again"。我只是从 Cloudhub 中删除了该应用程序并重新部署它,一切都按预期进行。从外观上看,Cloudhub 中存在非常奇怪的问题。希望 Mulesoft 能够解决...
在大多数情况下,此错误与 API 自动发现配置不当或损坏有关。如果API Mule 应用程序配置了自动发现,最好的解决方案是从Mule 应用程序中删除设置,通过重新启动进程检查错误是否已解决,然后重新配置自动发现。