用CHttpFile实现简单的GET/POST数据

一、GET 数据,下载网页,文件等,用于可下载的文件,不能用于服务端运行的程序,比如.aspx文件等,否则会返回500错误。
 1 CString strSentence, strWriteName = " 1.htm " ;
 2     CString strFileName = " http://localhost/InDesign/ "   +  strWriteName;
 3
 4     CInternetSession sess;
 5     CHttpFile *  fileGet;
 6      try
 7      {
 8        fileGet=(CHttpFile*)sess.OpenURL(strFileName);
 9    }

10      catch (CException *  e)
11      {
12        fileGet = 0;
13        throw;
14    }
   
15
16      if (fileGet)
17      {
18        DWORD dwStatus;
19        DWORD dwBuffLen = sizeof(dwStatus);
20        BOOL bSuccess = fileGet->QueryInfo(HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, &dwStatus, &dwBuffLen);
21
22        if( bSuccess && dwStatus>= 200&& dwStatus<300 )
23        {
24            CStdioFile fileWrite;
25            if(fileWrite.Open(strWriteName, CFile::modeWrite|CFile::modeCreate))
26            {
27                while(fileGet->ReadString(strSentence))
28                {
29                    fileWrite.WriteString(strSentence+"\n");
30                }

31                fileWrite.Close();
32                AfxMessageBox("下载完毕");
33            }

34            else
35            {
36                AfxMessageBox("本地文件"+strWriteName+"打开出错.");
37            }

38        }

39        else
40        {
41            strSentence.Format("打开网页文件出错,错误码:%d", dwStatus);
42            AfxMessageBox(strSentence);
43        }

44        fileGet->Close();
45        delete fileGet;
46    }

47      else
48         AfxMessageBox( " 不能找到网页文件! " );
49
50     sess.Close();

二、POST 数据,比如用于提交注册信息等

 1  CString strHttpName = " http://localhost/TestReg/RegForm.aspx " //  需要提交数据的页面
 2     CString strFormData  =   " username=abc&password=123 " ;     //  需要提交的数据
 3
 4     CInternetSession sess;
 5     CHttpFile *  fileGet;
 6     CString strHeaders  =  _T( " Content-Type: application/x-www-form-urlencoded " );  //  请求头
 7
 8      try
 9      {
10        fileGet=(CHttpFile*)sess.OpenURL(strHttpName);//打开文件
11    }

12      catch (CException *  e)
13      {
14        fileGet = 0;
15        throw;
16    }

17
18     CString strSentence, strGetSentence  =   "" ;
19      if (fileGet)
20      {
21        DWORD dwStatus;
22        DWORD dwBuffLen = sizeof(dwStatus);
23        BOOL bSuccess = fileGet->QueryInfo(HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, &dwStatus, &dwBuffLen);
24        if( bSuccess && dwStatus>= 200 &&dwStatus<300 )
25        {
26            BOOL result = fileGet->SendRequest(strHeaders, (LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());
27            while(fileGet->ReadString(strSentence))    // 读取提交数据后的返回结果
28            {
29                strGetSentence = strGetSentence + strSentence + char(13+ char(10);
30            }

31            AfxMessageBox(strGetSentence); // 显示返回网页内容
32        }

33        else
34        {
35            strSentence.Format("POST出错,错误码:%d", dwStatus);
36            AfxMessageBox(strSentence);
37        }

38       
39        fileGet->Close();
40        delete fileGet;
41    }

42      else
43         AfxMessageBox( " 不能找到网页文件! " );
44
45     sess.Close();
46

你可能感兴趣的:(pfile)