骡子中的Web服务消费者组件

时间:2017-12-20 10:12:30

标签: xml web-services xslt soap mule

Web服务使用者在使用变换器消息时返回值。但是在使用xslt组件时它无法正常工作。它返回null。

这是我的流程。

Http->字节数组到string-> xslt-> webservice consumer。

任何人都可以帮助我吗?

这是我的输入

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

<PayLoad>
 <RoutingHeader>
    <SourceID>1234</SourceID>
    <SourceName>ISGN</SourceName>
    <SourceRefNum>167309</SourceRefNum>
    <SourceRoutingRef />
    <DestinationID>999</DestinationID>
    <DestinationRefNum />
    <DestinationRoutingRef />
    <TransDate>2017-04-17T09:04:24.702000-04:00</TransDate>
  </RoutingHeader>
<PayLoad>

使用xslt组件将此xml转换为soap

这是我的xsl xode

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="URI_SOAP_WS">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:header/>
    <soap:Body>
        <xsl:apply-templates/>
    </soap:Body>
</soap:Envelope>
</xsl:template>
<xsl:template match="*">
 <xsl:element name="s:{local-name()}" namespace="http://spring.io/guides/s-
  producing-web-service">
    <xsl:apply-templates select="node()|@*" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>

当我将此soap文件发送到webservice使用者组件时,获取null

2 个答案:

答案 0 :(得分:0)

您的意思是网络服务提供商返回不同的价值吗?

你能检查两种情况下发送的输入吗?与json或java对象相比,Dataweave对XML的操作是不同的。

尝试通过浏览器访问Web服务并找到正确的输入结构并在流程中实现。

答案 1 :(得分:0)

当我使用XSL转换XML时,我得到以下结果:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:s="URI_SOAP_WS" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:header/>
<soap:Body>
<s:PayLoad xmlns:s="http://spring.io/guides/s-producing-web-service">
<s:RoutingHeader>
<s:SourceID>1234</s:SourceID>
<s:SourceName>ISGN</s:SourceName>
<s:SourceRefNum>167309</s:SourceRefNum>
<s:SourceRoutingRef/>
<s:DestinationID>999</s:DestinationID>
<s:DestinationRefNum/>
<s:DestinationRoutingRef/>
<s:TransDate>2017-04-17T09:04:24.702000-04:00</s:TransDate>
</s:RoutingHeader>
</s:PayLoad>
</soap:Body>
</soap:Envelope>

当您使用架构http://schemas.xmlsoap.org/soap/envelope/检查此转换后的代码时 你将有以下错误:

使用XML架构验证当前文件:

ERROR: Element '{http://schemas.xmlsoap.org/soap/envelope/}header': This element is not expected. Expected is one of ( {http://schemas.xmlsoap.org/soap/envelope/}Header, {http://schemas.xmlsoap.org/soap/envelope/}Body ).

这意味着只有块<soap:header/>应该来自大写<soap:Header/>,在XSL中更改它并重试。

如果仍有问题,请尝试检查以下内容:

How to use Web-Service-Consumer connector in Mule Community Edition

mule - web service consumer (soap) always returns null