用CHttpFile实现简单的GETPOST数据

xiaoxiao2021-02-28  86

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

一、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();
转载请注明原文地址: https://www.6miu.com/read-37119.html

最新回复(0)