VC通过HTTP方式获取网页

2016-02-19 16:19 116 1 收藏

图老师小编精心整理的VC通过HTTP方式获取网页希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~

【 tulaoshi.com - 编程语言 】

在VC中通过HTTP方式获取网页,我试过好几种方式,但是都有问题,现将我用的两种虽然也有问题但基本可以实现的方式写出来,如果大家有更好的方式或者能解决我所遇到的问题,请告诉我:QQ158792331,邮箱:werther161@yahoo.com.cn

第一种:

首先要包含这个头文件:#include afxinet.h

  CInternetSession mySession;
  CHttpFile* myHttpFile=NULL;
  CString myData;
  myHttpFile=(CHttpFile*)mySession.OpenURL(url,1,INTERNET_FLAG_DONT_CACHE,NULL,0);
  for(int i=0;i20&&myHttpFile-ReadString(myData);i++)
  {
   strXMLReturn+=myData+"";    //因为每次只能读取一行,所以要循环读取数据
  }
  myHttpFile-Close();
  delete []myHttpFile;
  mySession.Close();

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 使用二进制数据

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

不知道为什么这个函数当只用一个或者两个参数时不会报错,用三个或者按原形就会报错,但是用一个或者两个当页面更新时,不能获取到最新的数据(默认总是先检查缓存是否有要的数据)

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

第二种:

首先引用:

#import msxml4.dll named_guids
using namespace MSXML2;

 CString resaa;

 IXMLHTTPRequestPtr httpRes;
  HRESULT hr=httpRes.CreateInstance("MSXML2.XMLHTTP");
  if(!SUCCEEDED(hr)) 
  { 
   AfxMessageBox("无法创建XMLHTTP对象,请检查是否安装了MS XML运行库!"); 
  }

 LPCTSTR url="http://localhost/changjun/asxml.asp";

  httpRes-open("Get",url,false,"","");
  httpRes-send();
  if((httpRes-readyState)==4)  //4时表示数据已加载完
  {
   resaa=httpRes-responseText.copy();
  }
  httpRes.Release();

用这种方式返回值的默认编码方式为UTF-8,所以除了Google中国的网页能正常显示,其他的页面都是乱码,本想将返回值重新编码,但水平所限,我没有成功,如果谁解决了这个问题,不要忘记告诉我啊

来源:http://www.tulaoshi.com/n/20160219/1611676.html

延伸阅读
标签: ASP
  (摘自《计算机世界日报》) 1. HTTP 方 式 的 文 件 上 载 ---- 文 件 的 上 载( upload) 是 制 作 网 站 时 经 常 遇 到 的 问 题, 经 常 上 网 的 朋 友 大 都 使 用 过WEB 方 式 的Email 发 信. 操 作 大 体 是 这 样: 当 选 择 了 粘 贴 文 件 后, 直 接 输 入 本 地 文 件 的 绝 对 路 径 或 按BROWSER 按 钮 浏 览 要 粘 贴 的 ...
标签: 手机游戏 IOS
《烈焰》经验获取方式汇总 海量等级轻松获取 说到RPG游戏,绝大多数玩家都有一个共同的痛:需要花费很多时间去升级。但等级是RPG游戏的基础系统,所有装备、属性都是围绕等级而生的。在火玩《烈焰》游戏里,升级却是一件轻松自在的事情,让玩家有更多的时间和精力去体验激情四射、热血沸腾的PK玩法。而很大程度上,这都是得益于一个很新鲜的副...
  //可以查看按游戏手柄按钮时的情况.   //USB接口的游戏手柄   //编译环境:Windows 2000 server+VC++ 6.0+Win2K DDK   #include   #include   #include   #include   extern "C"   {   #include   }   void main()   {   GUID HidGuid;   // 查找本系...
  keyword:  ActiveX, TGUID, CoCreateGUID, GUIDToString //---Test Program By Conan 2005/04/14---// unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs,   ActiveX, StdCtrls; type   T...
一、引 言 ---- Windows Socket API是一套开放的、支持多种协议的Windows下的网络编程接口,它包 括一个标准的 Berkeley Socket功能调用的集合,以及为Windows所作的重要扩充。 Windows Socket经过不断完善并在众 多公司的全力支持下,已成为Windows网络编程 的事实上的标准。 ---- 本 文 将 在VC++ 5.0 环 境 下 介 绍 一个基于 Winsock ...

经验教程

981

收藏

46
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部