将音频流传输到wit.ai时esp32出现HTTP错误

问题描述

我有一个问题,我认为是我的HTTP请求语法引起的。

我正在尝试将音频流传输到wit.ai API以进行语音识别,并且遇到connection reset by peer400 Bad request错误

这是我启动请求的代码

void startChunkedRequest(SSLClient client,String server,String endpoint)
{
  client.print(String("POST https://") + server + endpoint + " HTTP/1.1\r\n");
  client.print(String("Host: ") + server + "\r\n");
  client.print("Authorization: Bearer "TOKEN"\r\n");
  client.print("Content-Type: audio/raw;encoding=signed-integer;bits=8;rate=50000;endian=little\r\n");
  client.print("transfer-encoding: chunked\r\n");
  client.print("\r\n");
}

这是我发送缓冲区的代码

void chunkedRequest(SSLClient client,uint8_t *buffer,size_t len)
{
   client.print(String(len,HEX).c_str());
   client.print("\r\n");
   client.write(buffer,len);
   client.print("\r\n");
}

一旦调用chunkedRequest函数,就会出现错误。 如果您知道解决方案或可能导致问题的原因,请告诉我。

解决方法

您的POST行错误地指定了端点。它不应包含协议或服务器,而应仅包含路径。尝试以下方法:

  client.print(endpoint + " HTTP/1.1\r\n");

并确保endpoint/开头。