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

转自:http://www.cnblogs.com/kaixuan/archive/2008/01/31/1060233.html

一、GET 数据,下载网页,文件等,用于可下载的文件,不能用于服务端运行的程序,比如.aspx文件等,否则会返回500错误。


 1CString 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
 

 

--kaixuan's cnblogs
 

posted @ 2012-01-09 11:25  stma  阅读(567)  评论(0编辑  收藏  举报