在REST上调用WSO2数据服务,内容为JSON, 我创建了一个服务,要求我发送一个参数化的get,在我的例子中是
http://localhost:9765/services/TRAVEL_DSS_REST.HTTPEndpoint/Cost_Filter?PACKAGE_COST=1000
虽然我收到XML格式的响应,但在调用REST服务时,我没有得到JSON格式的响应。
使用curl尝试了多个选项:
curl -i -H --header Content-Type:“application / json”“Accept:application / json”http://<ip>:<port>/services/TRAVEL_DSS_REST.HTTPEndpoint/Cost_Filter?PACKAGE_COST=1000
和Chrome Advanced Rest Client插件。
参考提供的解决方案@ This stackoverflow link
考虑到这一点,我假设我们必须在点击url中编码的WSO2-DS REST服务时发送GET参数以获得JSON响应。
我将通过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中,请帮助我解决问题。
谢谢, 兰詹
答案 0 :(得分:1)
我得到了一个解决方案,这种情况适用于我<property name="Content-Type" value="application/json/badgerfish" scope="transport" type="STRING"/>
在发送调解员之前,您可以看到卷曲中的响应。
答案 1 :(得分:0)
为了获得JSON中的响应,
将以下参数添加到$ CARBON_HOME / repository / conf / axis2.xml并重新启动服务器。
<parameter name="httpContentNegotiation">true</parameter>
使用curl as,
调用服务curl -X GET http://<ip>:<port>/services/TRAVEL_DSS_REST.HTTPEndpoint/Cost_Filter?PACKAGE_COST=1000 -H Accept:application/json