【发布时间】:2016-12-08 09:11:33
【问题描述】:
我已经使用here 所示的指定 curl 方法成功调用了 Watson Speech-To-Text API。我使用child_process 节点模块从我的节点脚本中调用Curl。
我正在尝试过渡到使用 request 模块来执行相同的网络请求(获取转录的 json 转储)。在requests 的条款中,我在编写正确的http 请求时遇到了一些麻烦。到目前为止,我有:
request({
url: 'https://stream.watsonplatform.net/speech-to-text/api/v1/recognize?continuous=true×tamps=true',
method: 'POST',
headers: {
'Content-Type': 'audio/wav',
'Transfer-Encoding':'chunked',
'Authorization': 'Basic <usernameRedacted:passwordRedacted>'
},
body: {
'--data-binary': audioFileName
}
}, function(error, response, body){
if(error) {
console.log(error);
} else {
console.log(response.statusCode, body);
}
});
我收到throw new TypeError('first argument must be a string or Buffer'); 或有时(在正确修改请求调用后)收到 400 http 响应代码。因此,据我所知,Curl 只是一个运行相同底层 Post 请求的 Unix 进程,大概我应该能够完成这项工作。不幸的是,我似乎在这里遗漏了一些重要的修复。此外,关于身份验证以及如何将二进制数据(CURL 中的 --data-binary)加载到 POST 正文中,我不清楚 NPM requests README。
任何帮助都非常感谢提前。
【问题讨论】:
标签: javascript node.js http curl npm