我编写了以下代码,用于调用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的响应。任何帮助将不胜感激。
答案 0 :(得分:0)
https
包非常灵活,但不是特别方便用户使用。你可以试试request
吗?
无论如何,要使你的POST工作,你需要添加Content-Length
标题。有关类似问题,请参阅this。
headers:{
'Ocp-Apim-Subscription-Key':'my key',
'Content-Type':'application/json',
'Content-Length':Buffer.byteLength(demo)
}