用CHttpFile实现简单的GET/POST数据
来源:互联网 发布:114la源码 编辑:程序博客网 时间:2024/05/16 07:19
原文地址::http://www.cppblog.com/edog/archive/2005/12/06/1554.html
相关文章
1、 关于使用CHttpFile----http://blog.csdn.net/sh_chenjian/article/details/4758738
2、
VC Http请求
----http://blog.sina.com.cn/s/blog_827ed2e001016le5.html3、
VC里打开网页几种方法 ----http://yubo1006.blog.163.com/blog/static/166059309201142371346524/4、CHttpFile_百度百科----http://baike.baidu.com/link?url=GP4QCoNwZgqkxqOU5nxHYZgS82W_qIibk4FK-DLQwJExrzhFU8EcbG9siFuy1_jO4xcU88E59GDBqYj_0_ri3q
5、Google web ApI的使用注意----http://blog.sina.com.cn/s/blog_827ed2e001016lfb.html
一、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();
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();
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();
0 0
- 用CHttpFile实现简单的GET/POST数据
- 用CHttpFile实现简单的GET/POST数据
- 用CHttpFile实现简单的GET/POST数据
- 用CHttpFile实现简单的GET/POST数据
- 用CHttpFile实现简单的GET/POST数据
- 用CHttpFile实现简单的GET/POST数据
- CHttpFile实现Get/Post
- CHttpFile GET/POST 提交数据
- CHttpFile实现Get/Post - 下载网页 提交表单
- Android get/ post 方法 传递网络数据 -简单的翻译功能实现(GET)
- Retrofit2.0的get post请求简单数据
- LINUX CGI简单的GET,POST的实现
- LINUX CGI简单的GET,POST的实现
- 4.安卓中get和post的简单实现
- Android学习 - get和post的简单实现
- 结合GET(),POST()实现一个简单、完整的服务器
- 使用Get和Post提交数据的实现和差别
- 获得数据的post,get
- 什么是编程语言
- jqueryui表单的验证
- QT QPushButton 之重写
- 简单水晶报表PUSH模式制作
- pyton 安装遇到的问题
- 用CHttpFile实现简单的GET/POST数据
- ViewPager延迟加载
- log4j2.1使用指南[一] java工程
- csdn博客从今天开始正式开启继续写博客模式
- uva--10130SuperSale +dp
- 【转】C#中 TreeView如何获取某一节点下的所有子节点
- SQL SERVER 2005/08 数据库置疑或挂起恢复
- Android系统启动过程
- 数学运算表达式形式的验证码 C# Asp.Net