C 如何接收HTTP响应
结果:C 如何接收HTTP响应,c,sockets,http,networking,C,Sockets,Http,Networking,结果: 我正在使用套接字编写HTTP客户端。这里的问题是read()func only返回HTTP响应体。但我希望它也能获取http响应头。我不知道我做错了什么。问题是您没有在GET请求中指定HTTP版本,因此服务器会认为您是1.0之前的客户端,不会向您发送任何头 改为这样做: char url[]= "GET " PATH "\r\n" "Host: " HOST "\r\n" "User-Agent: Mozilla/5.0\r\n" "\r\n"; write(sfd, url,
我正在使用套接字编写HTTP客户端。这里的问题是read()func only返回HTTP响应体。但我希望它也能获取http响应头。我不知道我做错了什么。问题是您没有在
GET
请求中指定HTTP版本,因此服务器会认为您是1.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);
}
或:
然后服务器会给你标题。问题是你没有在
GET
请求中指定HTTP版本,因此服务器会认为你是1.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);
}
或:
然后服务器会给你标题。什么是
buffer
和buffer\u SIZE
?使用buffer\u SIZE
作为缓冲区的名称非常混乱,所以你不应该这样做。写(sfd,header,strlen(url))
?如果header
包含的数据比url
多怎么办?或者如果它更短呢?我编辑了代码,对不起,每个人都知道什么是buffer
和buffer\u SIZE
?使用buffer\u SIZE
作为缓冲区的名称非常混乱,所以你不应该这样做。编写(sfd,header,strlen(url))
?如果header
包含的数据比url
多怎么办?如果短一点怎么办?我编辑了代码,对不起大家
char url[]= "GET " PATH " HTTP/1.1\r\n" ...