gpt4 book ai didi

java - 使用 JAVA (MULE) 访问有效负载

转载 作者:行者123 更新时间:2023-12-01 09:40:53 24 4
gpt4 key购买 nike

我目前正在使用 MULE 开发流程,并且需要使用 java 类获取一些信息。要进行一些验证、转换,然后调用 Oracle 数据库中的存储过程,我需要获取存储在 <type:Data> 中的信息。 ,这是流程:

<flow name="INSERT">
<http:listener config-ref="CONFIG_1" path="/afis/afisInsert" allowedMethods="POST" doc:name="HTTP"/>
<cxf:proxy-service port="InsertDATA" namespace="http://www.morpho.com/SIIMInterface/" service="InsertService" payload="envelope" wsdlLocation="AFISINSERT.wsdl" doc:name="CXF" configuration-ref="CXF_Configuration"/>
<component class="Transform" doc:name="Java"/>
<logger message="String message : #[payload]" level="INFO" doc:name="Logger"/>
</flow>

我正在发送具有以下结构的 POST 请求:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:type="http://XXX/ZZ/WWW/YYY/">
<soapenv:Header/>
<soapenv:Body>
<input>
<type:Data>
<type:id>1</type:id>
<type:sampleType>?</type:sampleType>
<!--Optional:-->
<type:tenprint>
<type:width>600</type:width>
<type:height>800</type:height>
<type:format>S</type:format>
</type:tenprint>
</type:Data>
<type:PersonID>123</type:PersonID>
<type:Priority>3</type:Priority>
</input>
<soapenv:Body>
</soapenv:Envelope>

我的java类在这里:

public class CLASE extends AbstractMessageTransformer{

public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException {

String mensajeString = new String();
try {
return message.getPayloadAsString();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

通过使用Mule变量,我能够使用XPATH访问xml的节点,在日志中,xml请求被正确打印。我尝试了很多方法,但无法正确访问Payload信息,如何使用JAVA获取存储到Payload中的信息?

最佳答案

您可以选择两个选项之一,以获取存储在<type:Data>中的信息。来自 Java 代码。

  1. 在 Java 代码中将 POST 数据解析为 XML 文档:

    public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException {
    BufferInputStream payload = (BufferInputStream) message.getPayload();
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(payload);

    String typeData = doc.getDocumentElement().getElementsByTagName("type:Data").item(0).getTextContent();
  2. 使用 XPATH 提取所需的数据,将其存储在变量中,然后在 Java 代码中继续:

    public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException {
    String typeData = message.getInvocationProperty("variableName");

关于java - 使用 JAVA (MULE) 访问有效负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38462999/

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