Javascript 对https API的IBM web操作调用不起作用
我正在用IBM Watson创建一个助手。助手将一些信息传递给调用https API并以JSON格式将数据回传给助手的web操作 看起来web操作只是在工作,不时会弹出一条消息“错误:该操作未生成有效响应,并意外退出。”。目前尚不清楚何时或是什么触发了故障。在几秒钟内多次调用完全相同的操作会导致错误消息随机出现(我没有更改操作中的任何内容或调用之间的代码)。当没有错误时,代码工作正常并提供了预期的答案 这里是紧凑的代码:Javascript 对https API的IBM web操作调用不起作用,javascript,node.js,https,webhooks,ibm-watson,Javascript,Node.js,Https,Webhooks,Ibm Watson,我正在用IBM Watson创建一个助手。助手将一些信息传递给调用https API并以JSON格式将数据回传给助手的web操作 看起来web操作只是在工作,不时会弹出一条消息“错误:该操作未生成有效响应,并意外退出。”。目前尚不清楚何时或是什么触发了故障。在几秒钟内多次调用完全相同的操作会导致错误消息随机出现(我没有更改操作中的任何内容或调用之间的代码)。当没有错误时,代码工作正常并提供了预期的答案 这里是紧凑的代码: function main(msg){ const https = r
function main(msg){
const https = require('https');
var reqUrl = https URL;
return new Promise(function(resolve, reject) {
https.get(reqUrl, (responseFromAPI) => {
responseFromAPI.on('data', (chunk) => {
completeResponse += chunk;
let movie_info = JSON.parse(completeResponse);
movie_info = movie_info.results[0];
console.log(movie_info);
resolve({movie_info});
})
responseFromAPI.on('error', (error) => {
console.log(error);
reject(error);
});
});
});
}
错误日志如下所示:
[
“2019-06-06T14:35:32.697875Z标准:未定义:1”,
2009-06-06-06-06-0614:35:35:32.696979099 z stderr:{“页面”1,“总体结果结果结果”76,“总体结果”页面”76,“总体页面”4,,,“结果”结果:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,“总体网页”总网页:::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,类型识别码\“[27,37,53],“背景路径”:“/Bqi6qbbxmkbar98hjkev1hfx71.jpg”,“成人”:假,“概述”:“一部以19世纪末西部边疆为背景的超自然惊悚片,《风》将凯特琳·杰拉德塑造成一个平原女人,被荒芜的土地的严酷和孤立逼疯了。”,“发布日期”:“2019-06-06”,{“计票”:2832,\“id”\“:353491,\'video\':false,\'vote\u average\':5.6,\'title\':'The Dark Tower\',\'popularity\':18.474,\'poster\u path\':\“/I9GusgddiqrrouqrroubilsvmryyRyRy0.jpg\”,“original\u language\':“en\”,“original\u title\u\':“The Dark Tower\”:“The Dark Tower\”,“流派ID\”:[28,14878,37,27],“Background\nCeVvg8pV0Pvg\”,“false”,“成人概览”\“最后一名枪手罗兰·德肖恩与沃尔特·奥迪姆(Walter O'Dim)展开了一场永恒的战斗,也被称为,
“2019-06-06T14:35:32.697914Z标准:”,
“2019-06-06T14:35:32.697951Z标准:语法错误:JSON输入意外结束”,
“2019-06-06T14:35:32.697955Z标准:在JSON.parse()”,
“2019-06-06T14:35:32.697959Z标准:在IncomingMessage.responseFromAPI.on(在NodeActionRunner.init(/nodejsAction/runner.js:79:45)处求值),:10:38”,
“2019-06-06T14:35:32.697963Z标准:在IncomingMessage.emit(events.js:189:13)”中,
“2019-06-06T14:35:32.697968Z标准代码:at IncomingMessage.Readable.read(_stream_Readable.js:487:10)”,
“2019-06-06T14:35:32.697972Z标准:流量(_stream_readable.js:931:34)”,
“2019-06-06T14:35:32.697976Z标准:在简历上(_stream_readable.js:912:3)”,
“2019-06-06T14:35:32.697980Z标准:在过程中._tickCallback(内部/过程/下一步_tick.js:63:19)”,
“未知:收集日志时出现问题。数据可能丢失。”
]
movie_info是电影和数据的列表,因此代码仅拾取位置[0]中的数据(此处为电影“风”)
我联系了API主机,他们说API工作正常,因此问题可能来自web操作本身
非常感谢您的帮助。您并不是解析所有响应,而是只解析第一个块
function main(msg){
const https = require('https');
var reqUrl = https URL;
return new Promise(function(resolve, reject) {
https.get(reqUrl, (responseFromAPI) => {
const chunks = [];
responseFromAPI
.on('data', chunk => chunks.push(chunk))
.on('end', _=> {
let movie_info = JSON.parse(Buffer.concat(chunks));
movie_info = movie_info.results[0];
console.log(movie_info);
resolve({movie_info});
})
.on('error', (error) => {
console.log(error);
reject(error);
});
});
});
}
非常感谢@Yaroslav Gaponov!!!我的promise结构在http调用中使用时没有出现任何问题。为什么需要在此处更改?我是一名新手,因此非常感谢提供任何文档:)