2014-11-30 3 views
0

Я не могу получить ответ на несколько HTTP-запросов, когда я пытаюсь вставить в очередь данные для отправки на сервер.Не удается получить несколько ответов на HTTP-запросы с подключением lwIP Raw TCP

Мы можем установить соединение с сервером и немедленно выдать HTTP-запрос внутри функции connected_callback() (называемой сразу после установления соединения с сервером) с помощью функции tcp_write(). Однако, если я пытаюсь создать два HTTP resquests или больше, используя следующий синтаксис:

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 или я что-то упускаю?

Если вам нужен еще один код для точного анализа моей проблемы, не стесняйтесь говорить об этом.

Спасибо!

+0

Ваша основная проблема, вероятно, в том, как вы получаете ответ. Но этот код здесь не показан. Кроме того, сервер может закрыть после обработки первого запроса. Если вы используете конвейерную обработку HTTP, вы должны знать об этом и повторить пропущенный запрос. –

ответ

0

Проблема, которую я вижу, состоит в том, что у вас есть двойная комбинация \r\n в конце вашего заявления заголовка запроса.

Вам нужно \r\n\r\n только в конце вашего заголовка. Теперь у вас есть два раза. Удалите первую запись.