我在使用C上的winsock读取文本文件内容时遇到问题,是否有人知道它应该如何工作?实际上,当我尝试从谷歌获取HTTP 标头时,但当我尝试使用 xampp 计算机时,
它只给了我400个不好的请求。
HTTP/1.1 400 Bad Request
char *message = "GET / HTTP/1.1\r\n\r\n";
好吧我通过winsock在我的localhost上收到400个错误请求的问题是我的HTTP请求,我只是将1.1更改为1.0 ..它有效!我现在想要的是打印文本文件的内容而不打印整个横幅?! :)
答案 0 :(得分:0)
阅读RFC 2616,特别是第5.2和14.23节。 HTTP 1.1请求必需包含Host
标头,HTTP 1.1服务器必需如果标头丢失且没有主机则发送400回复在请求行中指定。
char *message = "GET / HTTP/1.1\r\nHost: hostnamehere\r\n\r\n";
对于文本内容,您需要从套接字读取,直到遇到\r\n\r\n
序列(终止响应头),然后处理标题,然后相应地读取文本内容。响应标头告诉您如何读取文本内容的原始字节以及何时停止读取(有关详细信息,请参阅RFC 2616第4.4节)。获得原始字节后,Content-Type
标头会告诉您如何解释原始字节(数据类型,字符集等)。