首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON调用WSO2的REST、GET操作时出现问题

JSON调用WSO2的REST、GET操作时出现问题
EN

Stack Overflow用户
提问于 2013-05-22 19:16:45
回答 2查看 3K关注 0票数 2

在通过REST调用内容为JSON的WSO2数据服务时,我创建了一个服务,该服务要求我发送参数化的get,在我的示例中是

代码语言:javascript
复制
http://localhost:9765/services/TRAVEL_DSS_REST.HTTPEndpoint/Cost_Filter?PACKAGE_COST=1000

虽然我得到了XML格式的响应,但在调用REST服务时,我没有得到JSON格式的响应。

使用curl尝试了多个选项:curl -i -H --header Content-Type:“应用程序/json”"Accept: application/json“http://<ip>:<port>/services/TRAVEL_DSS_REST.HTTPEndpoint/Cost_Filter?PACKAGE_COST=1000

和Chrome Advanced Rest客户端插件。

参考了@ This stackoverflow link提供的解决方案

考虑到这一点,我假设我们必须发送GET参数,同时命中url中编码的WSO2-DS REST服务以获得JSON响应。

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

我已经在WSO2 ESB中开发了一个REST API来调用DS,虽然我可以在控制台中看到目录服务的响应,但我无法在客户端浏览器中看到它:( ..下面是我的REST API代码块

代码语言:javascript
复制
      `<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中的参数。

谢谢,Ranjan

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-30 13:53:03

我有一个变通的方法,当我在发送中介器之前<property name="Content-Type" value="application/json/badgerfish" scope="transport" type="STRING"/>的时候,这个场景可以工作,你可以在curl中看到响应。

票数 1
EN

Stack Overflow用户

发布于 2013-05-23 11:17:32

为了获得JSON格式的响应,

将以下参数添加到$ and _HOME/repository/conf/axis2.xml并重启服务器。

代码语言:javascript
复制
 <parameter name="httpContentNegotiation">true</parameter>

使用curl as调用服务,

代码语言:javascript
复制
curl -X GET http://<ip>:<port>/services/TRAVEL_DSS_REST.HTTPEndpoint/Cost_Filter?PACKAGE_COST=1000 -H Accept:application/json
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16690363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档