Как разместить двоичные данные в запросе, используя библиотеку запросов?

Я должен отправить двоичное содержимое удаленного файла на конечную точку 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)
    }
  })
}
Другие вопросы по тегам