2013-05-22 54 views
2

虽然通过REST与内容为JSON调用WSO2数据服务, 我创建了需要我送的服务的参数化得到的,这在我的情况是WSO2 DSS - 问题调用REST,GET操作JSON

http://localhost:9765/services/TRAVEL_DSS_REST.HTTPEndpoint/Cost_Filter?PACKAGE_COST=1000 

尽管我以XML格式获得响应,但在调用REST服务时,我并没有以JSON格式获得响应。

尝试多种选择使用curl: 卷曲-i -H --header的Content-Type: “应用/ JSON” “接受:应用/ JSON” http://<ip>:<port>/services/TRAVEL_DSS_REST.HTTPEndpoint/Cost_Filter?PACKAGE_COST=1000

和Chrome高级REST客户端插件。

简称考虑到这一点提供@This stackoverflow link

的解决方案,我认为我们有必要发送GET参数,同时击中在URL编码,以获得JSON响应WSO2-DS REST服务。

我会通过WSO2-ESB在WSO2-DS上调用这个REST服务,不确定我们如何发送来自ESB的编码请求来调用服务,我希望以JSON格式接收消息。

我在WSO2 ESB中开发了一个REST API来调用DS,而我能够在控制台中看到目录服务的响应,我无法在客户端浏览器中看到它:(这里是我的REST API

 `<api xmlns="http://ws.apache.org/ns/synapse" name="DSSClient" context="/DSSClient" hostname="localhost"> 
<resource methods="GET" uri-template="/{str1}"> 
    <inSequence> 
     <property name="REST_URL_POSTFIX" expression="fn:concat('/Cost_Filter?PACKAGE_COST=',get-property('uri.var.str1'))" scope="axis2" type="STRING"/> 
     <log level="full"/> 
     <send> 
      <endpoint> 
       <address uri="http://10.203.245.47:9765/services/TRAVEL_DSS_REST.HTTPEndpoint/"/> 
      </endpoint> 
     </send> 
    </inSequence> 
    <outSequence> 
     <log level="full"/> 
     <log separator=","> 
      <property name="response" value="***starting OUT Sequence****"/> 
     </log> 
     <property name="messageType" value="application/json/badgerfish" scope="axis2" type="STRING"/> 
     <property name="ContentType" value="application/json/badgerfish" scope="axis2" type="STRING"/> 
     <send/> 
    </outSequence> 
    <faultSequence/> 
</resource> 

`

控制台日志以相同的代码块是

[2013-05-23 11:12:12,833] INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:19b3edc6-1203-4778-b14d-47bb3a66e959, Direction: response, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><VALID_PACKAGES xmlns="http://www.wso2.org/dss_rest"><PACAKAGE><PACKAGE_ID>2</PACKAGE_ID><PACKAGE_NAME>Adventure</PACKAGE_NAME></PACAKAGE></VALID_PACKAGES></soapenv:Body></soapenv:Envelope> [2013-05-23 11:12:12,834] INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous,WSAction: ,SOAPAction: ,MessageID: urn:uuid:19b3edc6-1203-4778-b14d-47bb3a66e959,Direction: response,response = ***starting OUT Sequence****

请帮助我解决问题,如果代码中有任何或任何参数需要添加到conf。

感谢, 兰詹

回答

1

我周围的工作,这种情况下工作时,我<property name="Content-Type" value="application/json/badgerfish" scope="transport" type="STRING"/> 之前派调解员,你可以看到在卷曲的响应。

0

为了获得JSON响应,

添加下面的参数设置为$ CARBON_HOME /库/ conf目录/ axis2.xml并重新启动服务器。

<parameter name="httpContentNegotiation">true</parameter> 

调用服务与卷曲的,

curl -X GET http://<ip>:<port>/services/TRAVEL_DSS_REST.HTTPEndpoint/Cost_Filter?PACKAGE_COST=1000 -H Accept:application/json 
+0

谢谢Lakmali,该解决方案可帮助我在curl中接收JSON响应,请帮助我解决其他部分中无法从创建用于调用DS的REST API获得适当响应的其他部分。 – Ranjan