2016-03-12 8 views
0
char url[]= "GET " PATH "\r\n" 
"Host: " HOST "\r\n" 
"User-Agent: Mozilla/5.0\r\n" 
"\r\n";  
write(sfd, url, strlen(url)); // write(fd, char[]*, len); 
bzero(buffer, BUFFER_SIZE); 
while(read(sfd, buffer, 1024 - 1) != 0){ 
    printf("%s", BUFFER_SIZE); 
    bzero(buffer, 1024); 
} 

Результат: enter image description hereКак получить ответа HTTP

Я пишу HTTP Client с помощью гнезда. Проблема здесь в том, что функция read() func возвращает только тело ответа HTTP. Но я хочу, чтобы он также получал заголовок HTTP-ответа. Я не знаю, что я здесь делаю неправильно.

+0

Что такое 'buffer' и' BUFFER_SIZE'? – MikeCAT

+0

Использование 'BUFFER_SIZE' в качестве имени буфера очень сбивает с толку, поэтому вы не должны этого делать. – MikeCAT

+0

'write (sfd, header, strlen (url))'? Что, если 'header' содержит больше данных, чем' url'? Или что, если оно короче? –

ответ

3

Проблема в том, что вы не указываете версию HTTP в запросе GET, поэтому сервер будет считать вас клиентом до 1.0 и не будет отправлять вам какие-либо заголовки.

ли это вместо:

char url[]= "GET " PATH " HTTP/1.0\r\n" ... 

Или:

char url[]= "GET " PATH " HTTP/1.1\r\n" ... 

И тогда сервер передаст вам заголовки.

Смежные вопросы