VC通过HTTP方式获取网页
来源:互联网 发布:安徽网络电视台海豚tv 编辑:程序博客网 时间:2024/05/17 03:17
第一种:
首先要包含这个头文件:#include <afxinet.h>
CInternetSession mySession;
CHttpFile* myHttpFile=NULL;
CString myData;
//must include either INTERNET_FLAG_TRANSFER_ASCII or INTERNET_FLAG_TRANSFER_BINARY, but not both
myHttpFile=(CHttpFile*)mySession.OpenURL(url,1,INTERNET_FLAG_TRANSFER_ASCII,NULL,0);
DWORD dwStatusCode;
pfile -> QueryInfoStatusCode(dwStatusCode);
if(dwStatusCode == HTTP_STATUS_OK)
{
CString content="";
CString data;
while (pfile -> ReadString(data))
{
content+=data;
}
MessageBox(content);
}
pfile -> Close();
delete pfile;
session.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 使用二进制数据
不知道为什么这个函数当只用一个或者两个参数时不会报错,用三个或者按原形就会报错,但是用一个或者两个当页面更新时,不能获取到最新的数据(默认总是先检查缓存是否有要的数据)
第二种:
首先引用:
#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中国的网页能正常显示,其他的页面都是乱码,本想将返回值重新编码,但水平所限,我没有成功,如果谁解决了这个问题,不要忘记告诉我啊
第三种 :
代码如下:
CString postBuffer;
CInternetSession session("Mozilla/5.0");
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
CString m_sUrl;
// INTERNET_PORT nPort = 80;
pServer = session.GetHttpConnection("www.baidu.com");//好像只能这么写
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET,m_sUrl,"http://www.baidu.com");
pFile -> AddRequestHeaders("Content-Type: application/x-www-form-urlencoded");
pFile->AddRequestHeaders("Content-Type: multipart/form-data;/r/n");
pFile -> AddRequestHeaders("Accept: */*");
pFile -> SendRequest(NULL, 0, LPVOID(postBuffer.GetBuffer()), postBuffer.GetLength());
// you can read from the file after this
CString content="";
CString smsg;
while(pFile->ReadString(smsg)>0)//read ten line of returned HTML,you need to edit this to use the result
{
content+=smsg;
}//
MessageBox(content);
delete pFile;
pFile = NULL;
delete pServer;
pServer = NULL;
session.Close();
- VC++6.0 通过HTTP方式获取网页
- VC通过HTTP方式获取网页
- 转:VC通过HTTP方式获取网页
- VC通过HTTP方式获取网页
- VC通过HTTP方式获取网页
- VC++6.0 通过HTTP方式获取网页
- VC++通过HTTP方式获取网页源代码
- VC通过HTTP方式获取网页 - 四度专栏 - CSDNBlog
- VC++6.0 通过HTTP方式获取网页 OpenURL
- vc 获取网页内容(HTTP)
- vc 获取网页内容(HTTP)
- VC++获取某个http网页内容
- vc中如何通过http的post方式上传文件
- VC获取网页源码的三种方式
- VC获取网页源码的三种方式
- VC获取网页源码的三种方式
- java 通过http方式获取返回的数据
- 通过HTTP方式获取URL返回结果数据(Java)
- NiceTrack.cn快递物流跟踪系统接口说明(JAVA版本)
- VC++中使用使用winnet类获取网页内容
- 第N次被ACCESS的关键字涮
- VC中使用CInternetSession抓取网页内容
- 关于VPN的一些介绍
- VC通过HTTP方式获取网页
- 。。。。。。。。。
- php获取网页内容
- 网通路由表 2008-1-17数据
- Java基础:利用HttpClient获取网页内容
- Oracle SQL Developer(可管理多种类型数据库主流oracel,sqlserver,mysql)
- 电信路由表 2008-1-17日数据
- 解决 WMP 不支持 mms 协议,导致无法在线播放的问题
- 学习方法与心态