我正在构建一个简单的bot,它使http调用传入JSON对象。服务器返回错误- {"detail":"JSON解析错误-预期值:第1行第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框架
发布于 2017-08-18 09:23:12
答案更新 21/8/2017
使用Gupshup的IDE Builder进行HTTP调用的语法是正确的。查看这篇文章中的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);您需要发送“内容长度”,因为您的服务器将此作为强制性的,而Gupshup的后端在默认情况下并不像Postman或httpie那样发送内容长度。
https://stackoverflow.com/questions/45739463
复制相似问题