【问题标题】:Gupshup Post - Empty BodyGupshup Post - 空的身体
【发布时间】:2018-01-26 03:01:09
【问题描述】:

我正在构建一个简单的机器人,它可以通过 JSON 对象进行 http post 调用。服务器返回错误 - {"detail":"JSON parse error - Expecting value: line 1 column 1 (char 0)"}:

我认为服务器端不是问题;我已经尝试过使用 httpie 的请求。

Gupshup 中的代码

var contextParam = {
    "botname": event.botname, 
    "channel": event.channel, 
    "sender": event.sender,
    "message":event.message
};
var url = "https://abcserver.com/sm/postData";
var param = JSON.stringify(contextParam);
var header = {"Content-Type": "application/json"};
context.simplehttp.makePost(url, param, header) 

来自httpie的对应调用

http POST https://abcserver.com/sm/postData  botname=MrBot channel=Skype sender=MrSender message=Hi

在服务器端:

logger.debug("Request body : " + str(request.body))

将 - "Request body : b'" 放入日志文件中。

PS:我正在使用 Django,Django Rest Framework

【问题讨论】:

    标签: json django python-3.x django-rest-framework gupshup


    【解决方案1】:

    [答案更新 21/8/2017]

    使用 Gupshup 的 IDE Bot Builder 进行 HTTP POST 调用的语法是正确的。在存在工作代码的 SO 上查看此帖子 making-http-post-request-on-gupshup-ide-works

    完整的工作代码:

     var url_ = 'http://p-curl-i.herokuapp.com/getresponse/';
    var body = {
        "botname": event.botname,
        "channel": event.channel,
        "sender": event.sender,
        "message": event.message
    };
      var headers = {
    'cache-control': 'no-cache',
        'content-type': 'application/json',
        'Content-Length' : JSON.stringify(body).length 
    };
       context.simplehttp.makePost(url_, JSON.stringify(body), headers);
    

    您需要发送“Content-Length”,因为您的服务器将此作为强制性要求,而 Gupshup 的后端默认情况下不会像 Postman 或 httpie 那样发送内容长度。

    【讨论】:

    • 服务器端按预期使用httpie和postman,但是当请求来自gupshup时出现问题。有什么想法吗?
    • 能否分享API或Postman curl命令的详细信息供我测试?如果不在这里,那么您可以通过 developer@gupshup.io 写信给我们
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多