Как разместить двоичные данные в запросе, используя библиотеку запросов?
Я должен отправить двоичное содержимое удаленного файла на конечную точку API. Я читаю двоичное содержимое удаленного файла, используя библиотеку запросов, и сохраняю его в переменной. Теперь, когда содержимое переменной готово к отправке, как мне отправить его в удаленный API, используя библиотеку запросов.
То, что у меня есть сейчас и не работает, это:
const makeWitSpeechRequest = (audioBinary) => {
request({
url: 'https://api.wit.ai/speech?v=20160526',
method: 'POST',
body: audioBinary,
}, (error, response, body) => {
if (error) {
console.log('Error sending message: ', error)
} else {
console.log('Response: ', response.body)
}
})
}
Здесь можно смело предположить, что audioBinary
имеет двоичное содержимое, которое было прочитано из удаленного файла.
Что я имею в виду, когда говорю, что это не работает?
Полезная нагрузка отличается при отладке запросов. Фактическая двоичная полезная нагрузка: ID3TXXXmajor_brandisomTXXXminor_version512TXXX
Полезная нагрузка показанная при отладке: ID3\u0004\u0000\u0000\u0000\u0000\u0001\u0006TXXX\u0000\u0000\u0000\
Что работает в Терминале?
То, что я знаю, работает из терминала с той разницей, что он читает содержимое файла тоже в той же команде:
curl -XPOST 'https://api.wit.ai/speech?v=20160526' \
-i -L \
--data-binary "@hello.mp3"
1 ответ
Опция в библиотеке запросов для отправки двоичных данных как таковая encoding: null
, Значение кодировки по умолчанию: string
поэтому содержимое по умолчанию конвертируется в utf-8
,
Таким образом, правильный способ отправки двоичных данных в приведенном выше примере:
const makeWitSpeechRequest = (audioBinary) => {
request({
url: 'https://api.wit.ai/speech?v=20160526',
method: 'POST',
body: audioBinary,
encoding: null
}, (error, response, body) => {
if (error) {
console.log('Error sending message: ', error)
} else {
console.log('Response: ', response.body)
}
})
}