#c #http #esp32 #chunked #wit-ai
#c #http #esp32 #фрагментированный #wit-ai
Вопрос:
У меня проблема, которая, как я полагаю, вызвана синтаксисом моего HTTP-запроса.
Я пытаюсь передать аудио в wit.ai API для распознавания речи, и я получаю connection reset by peer
и 400 Bad request
ошибку.
Вот мой код для запуска запроса:
void startChunkedRequest(SSLClient client, String server, String endpoint)
{
client.print(String("POST https://") server endpoint " HTTP/1.1rn");
client.print(String("Host: ") server "rn");
client.print("Authorization: Bearer "TOKEN"rn");
client.print("Content-Type: audio/raw;encoding=signed-integer;bits=8;rate=50000;endian=littlern");
client.print("Transfer-Encoding: chunkedrn");
client.print("rn");
}
И вот мой код для отправки буфера:
void chunkedRequest(SSLClient client, uint8_t *buffer, size_t len)
{
client.print(String(len, HEX).c_str());
client.print("rn");
client.write(buffer, len);
client.print("rn");
}
Как только вызывается chunkedRequest
функция, появляется ошибка.
Если вы знаете решение или что может вызвать проблему, пожалуйста, дайте мне знать.
Комментарии:
1. Если вы установили
Transfer-Encoding: chunked
, то вы должны правильно обрабатывать фрагментированную полезную нагрузку. Это также помогает сначала опробовать ваш код на вашем компьютере (вы можете написать тестовую программу и скопировать-вставить в нее код).
Ответ №1:
В вашей POST
строке неверно указана конечная точка. Он не должен содержать протокол или сервер, только путь. Попробуйте это вместо:
client.print(endpoint " HTTP/1.1rn");
И убедитесь, что это endpoint
начинается с /
.
Комментарии:
1. Спасибо за быстрый ответ, но, к сожалению, у меня все еще есть похожая ошибка: сервер по-прежнему отправляет мне запрос 400: Bad, и соединение закрывается. Но ошибка немного отличается, поэтому, возможно, вы помогли мне решить часть проблемы.