Не удается получить несколько ответов на HTTP-запросы с помощью TCP-соединения lwIP Raw
Я не могу получить ответ на несколько запросов HTTP, когда я пытаюсь поставить в очередь данные для отправки на сервер.
Мы можем установить соединение с сервером и немедленно выполнить HTTP-запрос внутри функции connected_callback() (вызываемой, как только соединение с сервером установлено), используя функцию tcp_write(). Однако, если я попытаюсь сгенерировать два HTTP-запроса или более, используя следующий синтаксис:
err_t connected_callback(void *arg, struct tcp_pcb *tpcb, err_t err) {
xil_printf("Connected to JUPITER server\n\r");
LWIP_UNUSED_ARG(arg);
/* set callback values & functions */
tcp_sent(tpcb, sent_callback);
tcp_recv(tpcb, recv_callback);
if (err == ERR_OK) {
char* request = "GET /circuits.json HTTP/1.1\r\n"
"Host: jupiter.info.polymtl.ca\r\n\r\n";
(void) tcp_write(tpcb, request, 100, 1);
request = "GET /livrable1/simulation.dee HTTP/1.1\r\n"
"Host: jupiter.info.polymtl.ca\r\n\r\n";
(void) tcp_write(tpcb, request, 100, 1);
tcp_output(tpcb);
xil_printf("tcp_write \n");
} else {
xil_printf("Unable to connect to server");
}
return err;}
Мне удается отправить все данные на сервер, но я никогда не получаю никаких данных для второго HTTP-запроса. Мне удается распечатать полезную нагрузку для первого запроса (файл JSON), но мне так и не удается получить что-либо для файла.dee. Существуют ли конкретные инструкции для постановки HTTP-запросов вместе с lwIP или я что-то упустил?
Если вам требуется больше кода для точного анализа моей проблемы, не стесняйтесь говорить об этом.
Спасибо!
1 ответ
Проблема, которую я вижу в том, что у вас есть двойной \r\n
сочетание в конце вашего запроса заголовка заявления.
Тебе нужно \r\n\r\n
только в конце вашего заголовка. Теперь у вас есть двойной раз. Удалить из первой записи.