首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在通过WSO2 API管理器发布JSON数组时摆脱xmlPayload?

如何在通过WSO2 API管理器发布JSON数组时摆脱xmlPayload?
EN

Stack Overflow用户
提问于 2014-09-18 16:50:40
回答 1查看 344关注 0票数 2

我们已经安装了WSO2应用程序接口管理器1.6,并希望在其背后有一个RESTful We服务。但是当我们向we服务发送一个JSON数组时,它会被修改。

我们使用axis2.xml_PT,因为我们只是想要传递消息。在Publisher中,我将端点设置为URL端点,并将“格式”和“优化”选项设置为“保留原样”。但是当我运行这个命令时:

代码语言:javascript
复制
curl -H "Content-Type: application/json" -k -d '[{"price":"9,99"},{"price":"24,99"}]' -v 'http://our.url.here:8280/calle/0.1/'

这是发送到API管理器后面的what服务的内容(使用nc -l 1234捕获)

代码语言:javascript
复制
POST http://10.87.16.127:1234/ HTTP/1.1
Content-Type: application/json
Accept: */*
activityID: 1277246320952979749505377
Transfer-Encoding: chunked
Host: 1.2.3.4:1234
Connection: Keep-Alive
User-Agent: Synapse-PT-HttpComponents-NIO

33
{"xmlPayload":[{"price":"9,99"},{"price":"24,99"}]}
0

"xmlPayload“是从哪里来的?我不希望消息被读取或修改,只需要传递。

如何才能获得所需的行为?在发布JSON对象而不是数组时,它似乎工作得很好。

更新1:如果我使用Content-Type: text/plain,消息将原封不动地传递。

更新2:我像这样编辑了axis2.xml,消息通过了。这是正确的做法吗?

代码语言:javascript
复制
$ diff -Nur axis2.xml.bup axis2.xml
--- axis2.xml.bup   2014-09-18 11:12:04.851000719 +0000
+++ axis2.xml   2014-09-18 11:26:29.421472188 +0000
@@ -167,7 +167,7 @@

         <!--JSON Message Formatters-->
         <messageFormatter contentType="application/json"
-                          class="org.apache.axis2.json.JSONMessageFormatter"/>
+                          class="org.apache.axis2.format.PlainTextFormatter"/>
         <!--messageFormatter contentType="application/json"
                           class="org.apache.axis2.json.JSONStreamFormatter"/-->
         <messageFormatter contentType="application/json/badgerfish"
@@ -229,7 +229,7 @@

         <!--JSON Message Builders-->
         <messageBuilder contentType="application/json"
-                        class="org.apache.axis2.json.JSONBuilder"/>
+                        class="org.apache.axis2.format.PlainTextBuilder"/>
         <!--messageBuilder contentType="application/json"
                         class="org.apache.axis2.json.JSONStreamBuilder"/-->
         <messageBuilder contentType="application/json/badgerfish"
EN

回答 1

Stack Overflow用户

发布于 2016-08-08 18:04:06

如果您需要在不接触它们的情况下传递JSON请求负载,您可以使用以下配置。然后,它将传递请求负载,而不会根据任何特定的内容类型进行构建。通常,对于未知的数据类型,以及当您只想通过而不根据特定类型进行构建时,我们建议使用此构建器格式化程序。

代码语言:javascript
复制
<messageBuilder contentType="text/json"
                  class="org.wso2.carbon.relay.BinaryRelayBuilder"/>

请让我们知道上述解决方案是否有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25908183

复制
相关文章

相似问题

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