如何在WSO2 ESB 4.8.1中将休息服务响应从二进制转换为xml

时间:2016-04-28 12:55:17

标签: wso2 wso2esb esb wso2carbon

下面是在WSO2 ESB 4.8.1中实现的代理,这种返回响应采用二进制格式,如代理代码旁边所示。 xml响应中应该有响应。

注意:此代理按预期在WSO2 ESB 4.9.0中返回xml响应。

  <?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="postIDMPCall-withheader"
       transports="https http"
       startOnLoad="true"
       trace="disable">
   <description/>
   <target>
      <inSequence>
         <in>
            <property name="ContentType" value="text/xml" scope="axis2" type="STRING"/>
            <property name="HTTP_METHOD" value="POST" scope="axis2" type="STRING"/>
            <payloadFactory media-type="xml">
               <format>
                  <organizationList xmlns="">
                     <Organization>
                        <sourceRecordId>132</sourceRecordId>
                        <idmpRecordId>0</idmpRecordId>
                        <orgName>depcomp</orgName>
                        <smeNumber/>
                        <psmflCode/>
                        <countryCode>AF</countryCode>
                        <shortName/>
                        <remarks/>
                        <address>addressgger</address>
                        <city>mys</city>
                        <state>kar</state>
                        <postalCode>234</postalCode>
                        <contactPhone/>
                        <phoneExtension/>
                        <faxNumber/>
                        <faxExtension/>
                        <webSite/>
                        <active>YES</active>
                        <organizationId/>
                     </Organization>
                  </organizationList>
               </format>
               <args/>
            </payloadFactory>
            <log>
               <property name="before call" expression="$body"/>
            </log>
            <property name="user" value="system" scope="default" type="STRING"/>
            <property name="password"
                      value="Password2#"
                      scope="default"
                      type="STRING"/>
            <header name="_user" scope="transport" expression="get-property('user')"/>
            <header name="_password"
                    scope="transport"
                    expression="get-property('password')"/>
            <log>
               <property name="header" expression="get-property('user')"/>
            </log>
            <call blocking="true">
               <endpoint>
                  <address uri="http://<ipaddress>:<port>/<rest-Services-path>/UpdateOrganization"
                           format="rest"/>
               </endpoint>
            </call>
            <log>
               <property name="after call" expression="$body"/>
            </log>

 <property name="messageType" value="text/xml" scope="axis2" type="STRING"/>                <header name="To" scope="default" action="remove"/>
                <property name="RESPONSE" value="true"/>
                <send/>
                <property name="NO_ENTITY_BODY" scope="axis2" action="remove"/>
                <drop/>
             </in>
          </inSequence>
       </target>
    </proxy>

1.Logs:

[ESB] [2016-05-04 15:10:27,222]  INFO {org.apache.synapse.mediators.builtin.LogMediator} -  To: /services/postIDMPCall-withheader.postIDMPCall-withheaderHttpSoap12Endpoint, WSAction: urn:mediate, SOAPAction: urn:mediate, MessageID: urn:uuid:b5814442-977e-43ed-9cc9-f60faa46c5c2, Direction: request, before call = <soapenv:Body xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><organizationList><Organization><sourceRecordId>132</sourceRecordId><idmpRecordId>0</idmpRecordId><orgName>depcomp</orgName><smeNumber></smeNumber><psmflCode></psmflCode><countryCode>AF</countryCode><shortName></shortName><remarks></remarks><address>addressgger</address><city>mys</city><state>kar</state><postalCode>234</postalCode><contactPhone></contactPhone><phoneExtension></phoneExtension><faxNumber></faxNumber><faxExtension></faxExtension><webSite></webSite><active>YES</active><organizationId></organizationId></Organization></organizationList></soapenv:Body> {org.apache.synapse.mediators.builtin.LogMediator}
TID: [0] [ESB] [2016-05-04 15:10:27,230]  INFO {org.apache.synapse.core.axis2.TimeoutHandler} -  This engine will expire all callbacks after : 120 seconds, irrespective of the timeout action, after the specified or optional timeout {org.apache.synapse.core.axis2.TimeoutHandler}
TID: [0] [ESB] [2016-05-04 15:10:31,066]  INFO {org.apache.synapse.mediators.builtin.LogMediator} -  To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:cee9a5c2-1f64-4ff3-a6bd-712785567f8d, Direction: request, after call = <soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><axis2ns1:binary xmlns:axis2ns1="http://ws.apache.org/commons/ns/payload">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pgo8b3JnYW5pemF0aW9uUmVzcG9uc2VMaXN0PgogICAgPE9yZ2FuaXphdGlvbj4KICAgICAgICA8c291cmNlUmVjb3JkSWQ+MTMyPC9zb3VyY2VSZWNvcmRJZD4KICAgICAgICA8aWRtcFJlY29yZElkPjE3MTY5PC9pZG1wUmVjb3JkSWQ+CiAgICAgICAgPHN1Y2Nlc3M+U1VDQ0VTUzwvc3VjY2Vzcz4KICAgICAgICA8ZXJyb3I+Tm8gRXJyb3JzPC9lcnJvcj4KICAgIDwvT3JnYW5pemF0aW9uPgo8L29yZ2FuaXphdGlvblJlc3BvbnNlTGlzdD4K</axis2ns1:binary></soapenv:Body> {org.apache.synapse.mediators.builtin.LogMediator}

2.以二进制格式收到响应:

<axis2ns6:binary xmlns:axis2ns6="http://ws.apache.org/commons/ns/payload">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pgo8b3JnYW5pemF0aW9uUmVzcG9uc2VMaXN0PgogICAgPE9yZ2FuaXphdGlvbj4KICAgICAgICA8c3VjY2Vzcz5GQUlMVVJFPC9zdWNjZXNzPgogICAgICAgIDxlcnJvcj5SZWNvcmQgaXMgbm90IHByb2Nlc3NlZCBzdWNjZXNzZnVsbHkuIFBsZWFzZSBQcm92aWRlIHZhbGlkIFJlcXVlc3QgWE1MPC9lcnJvcj4KICAgIDwvT3JnYW5pemF0aW9uPgo8L29yZ2FuaXphdGlvblJlc3BvbnNlTGlzdD4K</axis2ns6:binary>    

3 个答案:

答案 0 :(得分:0)

要将XML有效内容转换为JSON,请在将消息发送到端点之前将messageType属性设置为axis2范围内的application / json。

<property name="messageType" value="application/json" scope="axis2"/>

答案 1 :(得分:0)

我不确定为什么你只有inSequence。 并且您在inSequence中的呼叫内容之前和之后都记录了。

你可以使用outSequence并检查吗?即

$ curl --fail http://ftp.redhat.com/redhat/brms/6.2.0/en/source/MD5
curl: (22) The requested URL returned error: 404
$ #I have verified that $? should be 22 at this point
$ var=romeo # Does this change $?
$ echo $? # I expected this to return 22 , but I got zero below
0 

答案 2 :(得分:0)

请检查您是否在/repository/conf/axis2/axis2.xml中启用了二进制消息构建器/格式化程序。如果是这样,请禁用二进制消息构建器并使用默认消息构建器/格式化程序并再次尝试。