首页 > 解决方案 > 将音频流式传输到 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调用该函数,错误就来了。如果您知道解决方案或可能导致问题的原因,请告诉我。

标签: c++httpesp32chunkedwit-ai

解决方案


您的POST线路错误地指定了端点。它不应该包含协议或服务器,只包含路径。试试这个:

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

并确保它endpoint/.


推荐阅读