2016-07-19 56 views
3

我有一个代理服务来搜索多个系统用户,应该返回JSON format.I结合反应得到的答复合并而是获得它以JSON格式我收到了XML格式的回复。 我可以看到在WSO2服务器日志JSON回应如下:无法获得响应JSON格式汇总后WSO2 ESB

[2016-07-19 07:26:58,249] INFO - LogMediator To: http://www.w3.org/2005/08/addr 
essing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:895c4303-6de5-49 
88-a4d1-c06275582841, Direction: response, Component = Application2, Payload: { 
"findUsers":[ 
{"id":"20","add_state":"0","remove_state":"0","supervisor_id_name":"","idc_id":" 
3","backup_supervisor_name":"","backup_supervisor":"","business_unit_id":"","com 
pany":"companyb","creation_date":"2016-05-11 18:02:42.0","deletion_date":"","dep 
artment":"922","display_name":"Kevin Mollo (companyb)","email_address":"Kevin.Mo 
[email protected]","exception_count":"","first_name":"Kevin","is_terminated":"Fal 
se","job_status":"Active","last_name":"Mollo","legacy_employee_id":"171352","sup 
ervisor_id":"","termination_date":"","title":"Broadband Technician","unique_id": 
"9000070","user_id":"user71","violation_count":""} 
] 
} 
[2016-07-19 07:26:58,888] INFO - LogMediator To: http://www.w3.org/2005/08/addr 
essing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:0cee9dc3-b6e6-48 
81-9bdd-a89ec22999a7, Direction: response, Component = Application1, Payload: {"vi 
ewableIdentityAttributes":{"Email":"[email protected]","cn":"Kevin Mollo" 
,"Last Name":"Mollo","First Name":"Kevin"},"assignedRoles":[],"listAttributes":[ 
"First Name","Last Name","Email","cn"]} 

不过,我不叫代理URL后获得JSON格式的响应。 下面是我的ESB配置:

<?xml version="1.0" encoding="UTF-8"?> 
<proxy xmlns="http://ws.apache.org/ns/synapse" 
     name="SPRSAPproxy" 
     transports="http,https" 
     statistics="disable" 
     trace="disable" 
     startOnLoad="true"> 
    <target> 
     <inSequence> 
     <log/> 
     <clone> 
      <target> 
       <sequence> 
        <property name="Application" value="Application1"/> 
        <property name="messageType" 
          value="application/xacml+json" 
          scope="axis2" 
          type="STRING"/> 
        <property name="Authorization" 
          expression="fn:concat('Basic ', base64Encode('username:password'))" 
          scope="transport"/> 
        <send> 
        <endpoint> 
         <address uri="http://hostname1:8080/identityiq/rest/identities/9000070"/> 
        </endpoint> 
        </send> 
       </sequence> 
      </target> 
      <target> 
       <sequence> 
        <property name="Application" value="Application2"/> 
        <property name="messageType" 
          value="application/json" 
          scope="axis2" 
          type="STRING"/> 
        <send> 
        <endpoint> 
         <address uri="http://hostname2:8080/aveksa/command.submit?cmd=findUsers&amp;format=json&amp;unique_id=9000070"/> 
        </endpoint> 
        </send> 
       </sequence> 
      </target> 
     </clone> 
     </inSequence> 
     <outSequence> 
     <log level="full" description=""> 
      <property name="Component" expression="get-property('Application')"/> 
     </log> 
     <aggregate> 
      <completeCondition> 
       <messageCount min="2"/> 
      </completeCondition> 
      <onComplete expression="/"> 
       <property name="messageType" 
         value="application/xacml+json" 
         scope="axis2" 
         type="STRING" 
         description="messageType"/> 
       <enrich> 
        <source clone="true" xpath="/"/> 
        <target type="body"/> 
       </enrich> 
       <send/> 
      </onComplete> 
     </aggregate> 
     </outSequence> 
     <faultSequence> 
     <log level="full" category="WARN"/> 
     </faultSequence> 
    </target> 
    <description/> 
</proxy> 

我得到如下回应:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header/><soapenv:Body><jsonObject><findUsers><id>20</id><add_state>0</add_state><remove_state>0</remove_state><supervisor_id_name></supervisor_id_name><idc_id>3</idc_id><backup_supervisor_name></backup_supervisor_name><backup_supervisor></backup_supervisor><business_unit_id></business_unit_id><company>companyb</company><creation_date>2016-05-11 18:02:42.0</creation_date><deletion_date></deletion_date><department>922</department><display_name>Kevin Mollo (companyb)</display_name><email_address>[email protected]</email_address><exception_count></exception_count><first_name>Kevin</first_name><is_terminated>False</is_terminated><job_status>Active</job_status><last_name>Mollo</last_name><legacy_employee_id>171352</legacy_employee_id><supervisor_id></supervisor_id><termination_date></termination_date><title>Broadband Technician</title><unique_id>9000070</unique_id><user_id>user71</user_id><violation_count></violation_count></findUsers></jsonObject><soapenv:Envelope><soapenv:Header/><soapenv:Body><jsonObject><viewableIdentityAttributes><Email>[email protected]</Email><cn>Kevin Mollo</cn><Last Name>Mollo</Last Name><First Name>Kevin</First Name></viewableIdentityAttributes><listAttributes>First Name</listAttributes><listAttributes>Last Name</listAttributes><listAttributes>Email</listAttributes><listAttributes>cn</listAttributes></jsonObject></soapenv:Body></soapenv:Envelope></soapenv:Body></soapenv:Envelope> 

请让我知道我怎样才能得到JSON响应。 任何帮助将不胜感激。

回答

2

您可以设置为messageType应用/ JSON,而不是应用程序/ XACML + JSON在outSequence和尝试。

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

还没有应用/ XACML + JSON消息格式化和消息建设者默认使用WSO2 ESB发货。如果您需要使用这些格式,则必须编写自己的格式化程序和构建程序,并将它们配置为axis2.xml文件。

+0

谢谢。我已经尝试了这一点,但我得到了我的服务器错误,并没有得到任何回应:错误是: [2016-07-20 13:33:06,363]错误 - JsonUtil #writeAsJson。无法将OMEle 转换为JSON。无效的XML负载。错误>>>意外字符 '>'(代码62)在线 xpected '=' 在[行,列{未知源}]:[1147] [二零一六年七月二十零日13:33:06363] ERROR - PassThroughHttpSender无法提交资源org.apache.axis2.AxisFault:无法写入JSON流。 在org.apache.synapse.commons.json.JsonUtil.writeAsJson(JsonUtil.java:22 1) – Alka

+0

好像该消息不能被确认为的OMElement。您可以尝试启用线路日志并在此处发布以验证从后端接收到的有效负载是什么。要启用wirelogs如下:http://mytecheye.blogspot.com/2013/09/wso2-esb-all-about-wire-logs.html – maheeka

+0

请点击下面的链接查看服务器响应: [服务器响应( http://imgur.com/a/zzyLm) – Alka