【问题标题】:HTTP error on esp32 while streaming audio to wit.ai将音频流式传输到 wit.ai 时 esp32 上的 HTTP 错误
【发布时间】:2020-12-24 14:10:39
【问题描述】:

我有一个问题,我认为这是由我的 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 函数,就会出现错误。 如果您知道解决方案或可能导致问题的原因,请告诉我。

【问题讨论】:

  • 如果您设置了Transfer-Encoding: chunked,那么您必须正确处理chunked 有效负载。它还有助于首先在您的 PC 上试用您的代码(您可以编写一个测试程序并将代码复制粘贴到其中)。

标签: c++ http esp32 chunked wit-ai


【解决方案1】:

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

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

并确保endpoint/ 开头。

【讨论】:

  • 感谢您的快速回答,但遗憾的是我仍然有类似的错误:服务器仍然向我发送 400:错误请求并且连接关闭。但错误略有不同,所以也许你帮我解决了部分问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
  • 2017-05-18
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
相关资源
最近更新 更多