http发送get请求的总结

来源:互联网 发布:我打打单软件 编辑:程序博客网 时间:2024/06/10 12:09

1.首先得用到WSADATA的东西(头文件如#include <winsock.h>)。

       WSADATA wsaData;WORD wVersionRequested = MAKEWORD(1,1);int nRet;nRet = WSAStartup(wVersionRequested, &wsaData);if (nRet){fprintf(stderr,"\nError initializing WinSock\n");return ;}if (wsaData.wVersion != wVersionRequested){fprintf(stderr,"\nWinSock version not supported\n");return ;}

2.发送的数据请求的头数据包如下:

                         strSend += " HTTP/1.0\r\n";
   strSend += "Host: " + strHost + "\r\n";
   strSend += "Accept: */*\r\n";
   strSend += "Accept-Language: zh-cn\r\n";
  // strSend += "Accept-Encoding: gzip, deflate\r\n";//update by 
   strSend += "User-Agent: Mozilla/4.0\r\n";

3.如果的数据小的话,就不需要采用压缩的方式。如果数据的文件过大就需要采用压缩数据的方式发送请求.

                         strSend += " HTTP/1.0\r\n";
    strSend += "Host: " + strHost + "\r\n";
    strSend += "Accept: */*\r\n";
    strSend += "Accept-Language: zh-cn\r\n";
    strSend += "User-Agent: Mozilla/4.0\r\n";

4.原因如下:

Accept-Encoding: gzip,deflate 
IE和我们的代码使用的HTTP头里面都有这条内容,将这条内容删掉我得到了正确的结果。原因如下:
这条信息代表本地可以接收压缩格式的数据,而服务器在处理时就将大文件压缩再发回客户端,IE在接收完成后在本地对这个文件又进行了解压操作,所以文件内容是正确的。而在我们的代码里是将这些内容直接存入文件,不存在解压缩的过程,所以Size变小,内容也不一样。
细心的人可以发现在,IE在Down某一个比较大一点的东西时,Down的过程中显示的大小,比Down下来实际大小要小,这就是因为在接收的过程中接收的是压缩文件,而存到本地后的文件当然要大一些了哈~~