将http标头值传递给Web服务使用者

时间:2016-06-14 00:17:33

标签: mule

我正在尝试将http标头值作为Web服务使用者传递,

httpHeader

我将此属性用作Web服务输入,

    <dw:transform-message doc:name="Transform Message">
    <dw:set-payload><![CDATA[%dw 1.0
    %output application/xml
    %namespace ns0 namespace
    ---
    {
    ns0#GetProject: {
    ns0#projectId: inboundProperties."http.query.params".projectId,
    ns0#upi: inboundProperties.sm_user
    }
    }]]></dw:set-payload>
    </dw:transform-message>

我还尝试将sm_user设置为变量并尝试访问TransformMessage中的变量,如下所示,但同样的错误,

    <dw:transform-message doc:name="Transform Message">
    <dw:set-payload><![CDATA[%dw 1.0
    %output application/xml
    %namespace ns0 namespace
    ---
    {
    ns0#GetProject: {
    ns0#projectId: inboundProperties."http.query.params".projectId,
    ns0#upi: flowVars.setUPI
    }
    }]]></dw:set-payload>
    </dw:transform-message>

错误:

    Server was unable to read request. ---> There is an error in XML document (3, 32). ---> Input string was not in a correct format.. Message payload is of type: ElementNSImpl

使用SM_USER标头转换XML:

    <?xml version='1.0' encoding='windows-1252'?>
    <ns0:GetProject xmlns:ns0="namespace">
      <ns0:projectId xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
      <ns0:upi xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
    </ns0:GetProject>

Flow XML:

    <flow name="ProjectEC">
    <dw:transform-message doc:name="Transform Message">
    <dw:set-payload><![CDATA[%dw 1.0
    %output application/xml
    %namespace ns0 namespace
    ---
    {
    ns0#GetProject: {
    ns0#projectId: inboundProperties."http.query.params".projectId ,
    ns0#upi: inboundProperties.SM_USER
    }
    }]]></dw:set-payload>
    </dw:transform-message>
    <ws:consumer config-ref="ECDataService_Consumer" operation="GetProject" doc:name="ECWebServiceConsumer"/>
    <mulexml:dom-to-xml-transformer doc:name="DOM to XML"/>
    <json:xml-to-json-transformer doc:name="XML to JSON"/>
    <set-variable variableName="extractJsondata" value="#[json:GetProjectResponse/GetProjectResult]" mimeType="application/json" doc:name="Variable"/>
    <set-payload value="#[flowVars.extractJsondata]" doc:name="Set Payload"/>
    <json:xml-to-json-transformer doc:name="XML to JSON"/>
    </flow>

有人可以告诉我,如果我遗失了什么。

由于

1 个答案:

答案 0 :(得分:0)

几乎没有检查

  1. 检查您的xml是否是您的Web服务真正寻找的确切格式。或

  2. 将编码从encoding='windows-1252'更改为UTF-8。关注网址Output Encoding issue in mule esb。或

  3. 由于试错版直接使用邮递员中的xml来点击webservice(不进行数据编辑以进行转换)。或

  4. 确保在启动xml greater sysmbol标记之前没有空格<?xml version='1.0' encoding="UTF-8"?>

  5. 检查上述4个步骤,否则可能会导致此问题。第3步将有助于测试。