码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2016-06-28 18:24:35      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

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

CString strSentence, strWriteName="1.htm";
技术分享    CString strFileName="http://localhost/InDesign/" + strWriteName;
技术分享
技术分享    CInternetSession sess;
技术分享    CHttpFile* fileGet;
技术分享    try
技术分享    {
技术分享        fileGet=(CHttpFile*)sess.OpenURL(strFileName);
技术分享    }
技术分享    catch(CException* e)
技术分享    {
技术分享        fileGet = 0;
技术分享        throw;
技术分享    }    
技术分享
技术分享    if(fileGet)
技术分享    {
技术分享        DWORD dwStatus;
技术分享        DWORD dwBuffLen = sizeof(dwStatus);
技术分享        BOOL bSuccess = fileGet->QueryInfo(HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, &dwStatus, &dwBuffLen);
技术分享
技术分享        if( bSuccess && dwStatus>= 200&& dwStatus<300 ) 
技术分享        
技术分享            CStdioFile fileWrite; 
技术分享            if(fileWrite.Open(strWriteName, CFile::modeWrite|CFile::modeCreate))
技术分享            
技术分享                while(fileGet->ReadString(strSentence))
技术分享                {
技术分享                    fileWrite.WriteString(strSentence+"\n");
技术分享                }
技术分享                fileWrite.Close();
技术分享                AfxMessageBox("下载完毕");
技术分享            }
技术分享            else
技术分享            {
技术分享                AfxMessageBox("本地文件"+strWriteName+"打开出错."); 
技术分享            }
技术分享        }
技术分享        else 
技术分享        {
技术分享            strSentence.Format("打开网页文件出错,错误码:%d", dwStatus);
技术分享            AfxMessageBox(strSentence);
技术分享        }
技术分享        fileGet->Close();
技术分享        delete fileGet;
技术分享    }
技术分享    else
技术分享        AfxMessageBox("不能找到网页文件!");
技术分享
技术分享    sess.Close();

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

CString strHttpName="http://localhost/TestReg/RegForm.aspx"// 需要提交数据的页面
技术分享    CString strFormData = "username=abc&password=123";    // 需要提交的数据
技术分享
技术分享    CInternetSession sess;
技术分享    CHttpFile* fileGet;
技术分享    CString strHeaders = _T("Content-Type: application/x-www-form-urlencoded"); // 请求头
技术分享
技术分享    try
技术分享    {
技术分享        fileGet=(CHttpFile*)sess.OpenURL(strHttpName);//打开文件
技术分享    }
技术分享    catch(CException* e)
技术分享    {
技术分享        fileGet = 0;
技术分享        throw;
技术分享    }
技术分享
技术分享    CString strSentence, strGetSentence = "";
技术分享    if(fileGet)
技术分享    {
技术分享        DWORD dwStatus;
技术分享        DWORD dwBuffLen = sizeof(dwStatus);
技术分享        BOOL bSuccess = fileGet->QueryInfo(HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, &dwStatus, &dwBuffLen);
技术分享        if( bSuccess && dwStatus>= 200 &&dwStatus<300 )
技术分享        
技术分享            BOOL result = fileGet->SendRequest(strHeaders, (LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());
技术分享            while(fileGet->ReadString(strSentence))    // 读取提交数据后的返回结果
技术分享            {
技术分享                strGetSentence = strGetSentence + strSentence + char(13+ char(10);
技术分享            }
技术分享            AfxMessageBox(strGetSentence); // 显示返回网页内容
技术分享        }
技术分享        else 
技术分享        {
技术分享            strSentence.Format("POST出错,错误码:%d", dwStatus);
技术分享            AfxMessageBox(strSentence);
技术分享        }
技术分享        
技术分享        fileGet->Close();
技术分享        delete fileGet;
技术分享    }
技术分享    else
技术分享        AfxMessageBox("不能找到网页文件!");
技术分享
技术分享    sess.Close();

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

标签:

原文地址:http://www.cnblogs.com/mazhenyu/p/5624323.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!