gpt4 book ai didi

java - 在 ESB mule 中发送 POST 请求

转载 作者:太空宇宙 更新时间:2023-11-04 12:50:19 25 4
gpt4 key购买 nike

我尝试使用 ESB mule 将 post 请求发送到 API。因此我创建了这样的流程。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd">
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8110" doc:name="HTTP Listener Configuration"/>
<http:request-config name="HTTP_Request_Configuration" protocol="HTTPS" host="api.bonanza.com" port="443" doc:name="HTTP Request Configuration"/>
<flow name="bonanza_fetchtoken_ceFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/fetchtoken" allowedMethods="GET" doc:name="HTTP"/>
<message-properties-transformer doc:name="Message Properties">
<add-message-property key="X-BONANZLE-API-DEV-NAME" value="t*****I"/>
<add-message-property key="X-BONANZLE-API-CERT-NAME" value="l*****F"/>
</message-properties-transformer>
<set-payload value="fetchTokenRequest" doc:name="Set Payload"/>
<set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
<http:request config-ref="HTTP_Request_Configuration" path="/api_requests/secure_request" method="POST" doc:name="HTTP">
<http:success-status-code-validator values="0..599"/>
</http:request>
</flow>
</mule>

在API文档中,他们提供了java发送和接收响应的示例代码,它也在我的本地工作。 java代码片段如下。

import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.HttpURLConnection;

public class FetchToken {

public static void main(String[] args) {
// TODO Auto-generated method stub
try {
String devId = "t******I";
String certId = "l*******F";

URL url = new URL("https://api.bonanza.com/api_requests/secure_request");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();

connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("Accept", "application/json");
connection.setRequestProperty("X-BONANZLE-API-DEV-NAME", devId);
connection.setRequestProperty("X-BONANZLE-API-CERT-NAME", certId);

OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());

String requestName = "fetchTokenRequest";

writer.write(requestName);
writer.flush();
writer.close();

BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String response = in.readLine();

JSONObject jsonResponse = new JSONObject(response);

if (jsonResponse.optString("ack").equals("Success")
&& jsonResponse.optJSONObject("fetchTokenResponse") != null) {
// Success! Now read more keys from the json object
JSONObject fetchTokenJson = jsonResponse.optJSONObject("fetchTokenResponse");

System.out.println("Your token: " + fetchTokenJson.optString("authToken"));
System.out.println("Token expiration time: " + fetchTokenJson.optString("hardExpirationTime"));
System.out.println("Authentication URL: " + fetchTokenJson.optString("authenticationURL"));
}


} catch (Exception e) {
System.out.println(e);
}
}
}

我不是java专业知识。在上面的示例中,他们如何使用 Java 发送 post 有效负载 (fetchTokenRequest)。我如何在 mule ESB 中发送相同的有效负载。

如果是流发布有效负载,我如何在 ESB mule 中发送流发布有效负载?

最佳答案

在您的示例中,您的 http 监听器正在监听的任何有效负载都将是您的 post 请求的有效负载。要使用不同的有效负载,请使用 <set-payload doc:name="Set Payload" value="your_value"/>在出站 http 之前。

设置Content-Typeapplication/json之后set-payload ,使用<json:object-to-json-transformer/>

关于java - 在 ESB mule 中发送 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35895926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com