2017-08-17 38 views
0

我正在構建一個簡單的機器人,使得通過JSON對象傳遞http post調用。服務器迴應錯誤 - {「detail」:「JSON解析錯誤 - 期望值:第1行第1列(char 0)」}:Gupshup Post - Empty Body

我不認爲服務器端是問題;我用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信道= Skype的發件人= MrSender消息=您好

在服務器端:記錄器。 debug(「Request body:」+ str(request.body))puts - 「請求正文:b'」在日誌文件中。

PS:我使用Django的,Django的REST框架

回答

0

[答案更新 21/8/2017]

用於使用Gupshup的IDE博特生成器是HTTP POST調用的語法正確。看看這個職位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的後端不發送默認的內容長度爲郵差或httpie做派「內容長度」。

+0

服務器端與預期的一樣使用httpie和postman,但在請求來自gupshup時有問題。有什麼想法嗎? – RMDev

+0

是否有可能分享API或Postman curl命令的詳細信息供我測試?如果不在這裏,你可以寫信給我們在[email protected] – Shreyans