本站首页    管理页面    写新日志    退出


«October 2025»
1234
567891011
12131415161718
19202122232425
262728293031


公告

要勇敢面对一切不幸

联系方式

MSN:ideation_shang@hotmail.com
MAIL:ideation_shang@126.com
QQ  :113017429


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:ideation_shang的blog
日志总数:30
评论数量:149
留言数量:0
访问次数:671248
建立时间:2005年4月21日




[C++]VC++6.0 通过HTTP方式获取网页
原创空间,  随笔,  软件技术,  电脑与网络

ideation 发表于 2006/5/29 14:43:38

最近做了个项目,用VC开发,很有技术难度,习惯了Java开发,VC都忘差不多啦,呵呵~ 为了吃饭,硬着头皮也得做下去啊。项目里面用到了获取网页数据,需要http header 来验证客户端合法性,找了些资料,都有问题。还是自己写吧,用 CInternetSession //头部包含afxinet.h #include <afxinet.h> CInternetSession::OpenURL函数原型为: CStdioFile* OpenURL( LPCTSTR pstrURL, //文件URL地址  DWORD dwContext = 1, //上下文ID  DWORD dwFlags = INTERNET_FLAG_TRANSFER_ASCII, //标记  LPCTSTR pstrHeaders = NULL, //发送到服务器的数据头  DWORD dwHeadersLength = 0 );//发送到服务器的数据头长度 dwFlags可以为:INTERNET_FLAG_RELOAD 强制重读数据 INTERNET_FLAG_DONT_CACHE 不保存到缓存 INTERNET_FLAG_TRANSFER_ASCII 使用文本数据 INTERNET_FLAG_TRANSFER_BINARY 使用二进制数据 //获取网页的方法代码如下CString getURLContext(LPCTSTR pstrURL){ //自定义http头信息 char* headers="Accept:*/*\r\n"  "Accept-Language:zh-cn\r\n"  "User-Agent:VCTestClient\r\n";  CString m_strHTML; try {  CInternetSession sess;//建立会话  CHttpFile* pF=(CHttpFile*)sess.OpenURL(pstrURL,1,INTERNET_FLAG_TRANSFER_ASCII||INTERNET_FLAG_RELOAD,headers,strlen(headers));//打开文件  注意:OpenURL 方法的dwFlags参数 必须选择传输模式为INTERNET_FLAG_TRANSFER_ASCII 或者 INTERNET_FLAG_TRANSFER_BINARY   CString szData,szAllData;  while(pF->ReadString(szData))  {   //读取文件   szAllData+="\r\n";   szAllData+=szData;  }  pF->Close();  sess.Close();  m_strHTML=szAllData; } catch(CException *e) {  AfxMessageBox("获取数据失败"); } return m_strHTML;} 希望能对需要的朋友有帮助。


阅读全文(29597) | 回复(4) | 编辑 | 精华
 


回复:VC++6.0 通过HTTP方式获取网页
原创空间,  随笔,  软件技术,  电脑与网络

hello(游客)发表评论于2008/10/24 18:10:15

  获取的时候,页面编码是utf-8,然后得到的是乱码,怎么办呢 以下为blog主人的回复: 找utf-8转gbk的方法


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:VC++6.0 通过HTTP方式获取网页
原创空间,  随笔,  软件技术,  电脑与网络

Fiona(游客)发表评论于2007/6/21 16:41:40

为什么我用同样的方法调用OpenURL,但返回的文件指针句柄无效,一读就出错呢?

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:VC++6.0 通过HTTP方式获取网页
原创空间,  随笔,  软件技术,  电脑与网络

LIU(游客)发表评论于2007/3/9 16:29:32

你好,看了你的文章很受启发,能不能指导一下怎样获取需要密码才能访问的网页?谢谢

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:VC++6.0 通过HTTP方式获取网页
原创空间,  随笔,  软件技术,  电脑与网络

guest(游客)发表评论于2006/6/26 14:46:18

[C++]VC++6.0 通过HTTP方式获取网页原创空间,  随笔,  软件技术,  电脑与网络 ideation 发表于 2006-5-29 14:43:38 最近做了个项目,用VC开发,很有技术难度,习惯了Java开发,VC都忘差不多啦,呵呵~ 为了吃饭,硬着头皮也得做下去啊。项目里面用到了获取网页数据,需要http header 来验证客户端合法性,找了些资料,都有问题。还是自己写吧,用 CInternetSession //头部包含afxinet.h #include <afxinet.h> CInternetSession::OpenURL函数原型为: CStdioFile* OpenURL( LPCTSTR pstrURL, //文件URL地址  DWORD dwContext = 1, //上下文ID  DWORD dwFlags = INTERNET_FLAG_TRANSFER_ASCII, //标记  LPCTSTR pstrHeaders = NULL, //发送到服务器的数据头  DWORD dwHeadersLength = 0 );//发送到服务器的数据头长度 dwFlags可以为:INTERNET_FLAG_RELOAD 强制重读数据 INTERNET_FLAG_DONT_CACHE 不保存到缓存 INTERNET_FLAG_TRANSFER_ASCII 使用文本数据 INTERNET_FLAG_TRANSFER_BINARY 使用二进制数据 //获取网页的方法代码如下CString getURLContext(LPCTSTR pstrURL){ //自定义http头信息 char* headers="Accept:*/*\r\n"  "Accept-Language:zh-cn\r\n"  "User-Agent:VCTestClient\r\n";  CString m_strHTML; try {  CInternetSession sess;//建立会话  CHttpFile* pF=(CHttpFile*)sess.OpenURL(pstrURL,1,INTERNET_FLAG_TRANSFER_ASCII||INTERNET_FLAG_RELOAD,headers,strlen(headers));//打开文件  注意:OpenURL 方法的dwFlags参数 必须选择传输模式为INTERNET_FLAG_TRANSFER_ASCII 或者 INTERNET_FLAG_TRANSFER_BINARY   CString szData,szAllData;  while(pF->ReadString(szData))  {   //读取文件   szAllData+="\r\n";   szAllData+=szData;  }  pF->Close();  sess.Close();  m_strHTML=szAllData; } catch(CException *e) {  AfxMessageBox("获取数据失败"); } return m_strHTML;} 希望能对需要的朋友有帮助。

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.688 second(s), page refreshed 144816548 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号