我正在使用用 Active State Perl 编写的服务器。显然,如果GET
请求格式不正确,响应结果将返回,但没有它们的 http 标头。在我的情况下确实如此。
IO::Socket
Perl 服务器分别使用和监听请求并发送响应SendHTTPRequest
。
所以我的问题如下。以下GET
请求无效吗?
"GET ?CA=1&STREET=990%20MASS%20AVENUE&STREET2=UNIT%20A37&CITY=ARLINGTON&STATE=MA&ZIP=00000%20HTTP/1.1\r\n\r\n"
如果请求无效,它如何无效?我想更正格式。
显然,ActiveState Perl 认为该请求无效。
正确设置套接字后,以下代码发送请求并等待响应。如果您需要查看包含主机名的套接字设置,我将编辑这篇文章并在底部添加,但假设套接字设置正确。
size_t bytes_read = 0; /* Keeps per-loop read-count. */
char local_buf[INET_BUF_LEN] = {'\0'};
total_socket_read_bytesM = 0; /* Initialize module-scope read length */
write (socket_fdP, request_bufP, strlen(request_bufP));
while(TRUE)
{
if(total_socket_read_bytesM <= (read_bufP_len - 1))
{
bytes_read = read(socket_fdP, (local_buf + bytes_read), sizeof(local_buf));
if (bytes_read == 0)
{
break;
}
else
{
total_socket_read_bytesM += bytes_read;
}
}
else
{
break;
}
}
我可以踢球,不用担心,因为我得到了结果。但是,我想编写我的 C 程序来创建一个有效的 httpGET
请求。
结语:
这是我的工作请求的样子:
"GET /?CA=1&STREET=990%20MASS%20AVENUE&STREET2=UNIT%20A37&CITY=ARLINGTON&STATE=MA&ZIP=00000 HTTP/1.1\r\n\r\n"