2017-07-06 9 views
0

Microsoft QnA maker generate answer APIを呼び出すためのコードを以下に記述しました。ボディパラメータを持つQnA maker APIからの応答を取得中にエラーが発生しました

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){ 
 
\t console.error(e); 
 
});

しかし、process.stdout.write(data);部分がエラーコードの印刷された:未指定を、メッセージとともに、 "いくつかの時間後に試してみてください"。 Bodyパラメータが書き込まれる前に応答が返されていると思います。私の質問は、私のコンソールに表示されたAPIの応答を取得する方法です。どんな助けもありがとう。

答えて

0

httpsパッケージはフレキシブルですが、特にユーザーフレンドリーではありません。代わりにrequestを試してみることがありますか?

とにかく、POSTを機能させるには、Content-Lengthヘッダーを追加する必要があります。同様の質問については、thisを参照してください。

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