【问题标题】:Worklight HTTP adapter - Using it with HTTP POST and JSON payloadWorklight HTTP 适配器 - 将其与 HTTP POST 和 JSON 有效负载一起使用
【发布时间】:2013-04-08 09:13:20
【问题描述】:

我尝试使用 HTTP 适配器通过 Post 将 JSON 对象发送到作为 REST API 实现的后端服务。

有几件事要么不起作用,要么我做错了。查询参数不会传输到 REST 服务提供者。无论我是将它们添加到路径还是调用中的参数对象。

HTTP 适配器始终使用此 REST 接口不接受的分块传输编码。有没有办法影响 HTTP 适配器的行为?

我的电话是这样的:

function doSomething(data1, data2, payload) {
    var input = {
        'method' : 'post',
        'path' : '/myRESTAPI/SalesOrder',
        'returnedContentType' : 'json',

        'headers' : {
            'Accept-Encoding': 'gzip,deflate',
            'Content-Type': 'application/json'
        },

        'parameters' : {
            'data1' : data1,
            'data2' : data2
        },

        'body': { 
                    'contentType' : 'application/json',         
                    'content' : payload
                }

    };  
        return WL.Server.invokeHttp(input);
} 

你看到我在那里做的任何错误吗?

【问题讨论】:

标签: json http http-post adapter ibm-mobilefirst


【解决方案1】:

你可以在这里找到答案:worklight adapter

在 5.0.5.x 中,invokeHttp 将采用路径上提供的任何参数 put and post 并将它们放在 http 正文中,而不是 它们作为查询参数保留在路径上(开发人员可能 故意的)。此行为将在即将发布的版本中更新,但 目前没有办法强制这些保留为查询参数。

【讨论】:

  • 您好 - 感谢您的快速回复。这意味着路径变量将不再包含查询参数,但它们包含在 http 正文中。如果已经有一个 JSON 对象我们想要与正文一起发布,在这种情况下会发生什么 - 这将被保留或覆盖。我们发现,只要我们将 body {} 参数添加到输入变量,WL HTTP 适配器就会切换到 Transfer-Encoding:chunked - 有没有办法影响这一点?任何配置参数?只是考虑不支持这一点的 REST API。在这种情况下,WL HTTP 适配器应该能够适应。
  • 附加评论 - 升级到 WorkLight 5.0.6 帮助我们摆脱了 WL HTTP 适配器的一些负面行为。在 v5.0.6 中,当我们使用 WebSphere Message Broker for Mobile Resources 提供的模式调用 WL HTTP 适配器时,不会发生此 Transfer-Encoding : chunked 问题。
猜你喜欢
  • 2016-05-18
  • 2015-10-25
  • 2013-05-23
  • 1970-01-01
  • 2016-01-03
  • 1970-01-01
  • 1970-01-01
  • 2013-02-12
  • 2014-09-22
相关资源
最近更新 更多