使用body参数从QnA maker API获取响应时出错

时间:2017-07-06 19:58:09

标签: node.js express microsoft-cognitive

我编写了以下代码,用于调用microsoft QnA maker生成答案API。

<input type='tel' pattern='[\+]\d{2}[\(]\d{2}[\)]\d{4}[\-]\d{4}' title='Phone Number (Format: +99(99)9999-9999)' value="12312312123">

但是,var http=require('https'); var demo=[]; console.log("Doing the Post Operations..."); // Define an demo object with properties and values. This object will be used for POST request. var demo=JSON.stringify({"question":"hi"}); var extServerOptionsPost={ host:'westus.api.cognitive.microsoft.com', path:'/qnamaker/v2.0/knowledgebases/<my kb id>/generateAnswer', port:443, method:'POST', headers:{ 'Ocp-Apim-Subscription-Key':'my key', 'Content-Type':'application/json' } }; var reqPost=http.request(extServerOptionsPost,function(res){ console.log("response statusCode: ",res.statusCode); res.on('data',function(data){ console.log('Posting Result:\n'); process.stdout.write(data); console.log('\n\n POST Operation Completed'); }); }); reqPost.write(demo); reqPost.end(); reqPost.on('error',function(e){ console.error(e); });部分是打印错误代码:未指定,以及消息“请在一段时间后尝试”。 我认为在这里发生的是它在写入body参数之前返回响应。所以我的问题是,如何获得在我的控制台中打印的API的响应。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

https包非常灵活,但不是特别方便用户使用。你可以试试request吗?

无论如何,要使你的POST工作,你需要添加Content-Length标题。有关类似问题,请参阅this

headers:{
    'Ocp-Apim-Subscription-Key':'my key',
    'Content-Type':'application/json',
    'Content-Length':Buffer.byteLength(demo)
}