本示例使用MFC 类CInternetSession 建立连接,使用 CHttpFile读取内容。

首先,建立一个MFC对话框项目,界面如下:

1. 添加头文件:

#include <afxinet.h>

2. UTF-8 转 UNICODE:

int cU8xU(wchar_t* pOut,char *pText)
{
int ret = 0;
char* uchar = (char *)pOut;
unsigned cIn = (unsigned char)pText[0];
if(cIn<0x80){ // ASCII 0x00 ~ 0x7f
pOut[0] = pText[0];
}else if(cIn<0xdf){
uchar[0] = (pText[0]<<6)|(pText[1]&0x3f);
uchar[1] = (pText[0]>>2)&0x0f;
ret = 1;
}else if(cIn<=0xef){
uchar[0] = (pText[1]<<6)|(pText[2]&0x3f);
uchar[1] = (pText[0]<<4)|((pText[1]>>2)&0x0f);
ret = 2;
}else if(cIn<0xf7){
uchar[0] = (pText[2]<<6)|(pText[3]&0x3f);
uchar[1] = (pText[1]<<4)|((pText[2]>>2)&0x0f);
uchar[2] = ((pText[0]<<2)&0x1c)|((pText[1]>>4)&0x03);
ret = 3;
}
return ret;
}
int sU8xU(WCHAR* pOut,char *pText,int Len){
int i,j;
for(i=0,j=0;i<Len;i++,j++){
i+=cU8xU(&pOut[j],&pText[i]);
}
return j;
}

3. 加入按键响应函数:

void CURL_TESTDlg::OnBnClickedButton1()
{
//#include <afxinet.h>
CString url;
GetDlgItem(IDC_EDIT1)->GetWindowText(url); DWORD code = 0;
CInternetSession httpSession ;
CHttpFile * htmlFile=NULL ; try{
//打开网页
htmlFile=(CHttpFile*)httpSession.OpenURL(_T("http://www.sogou.com/")); //htmlFile=(CHttpFile*)httpSession.OpenURL(url);
htmlFile->QueryInfoStatusCode(code);
}catch(...)
{
MessageBox(_T("err"),_T("BE"),1); // 如果断网而打不开这个网址,并且不抓取这个错误,就会弹出一个提示系统提示框!这里我自己处理。 return;
} //读取网页数据
CString str;
CString info=_T("");
while(htmlFile->ReadString(str))
{
info+=str ;
} //释放
htmlFile->Close();
httpSession.Close(); //显示
CString result;
int length = info.GetLength();
char *ab = new char[length];
memset(ab, 0, length);
memcpy(ab, info.GetBuffer(), length);
WCHAR *big = new WCHAR[length];
memset(big, 0, length);
int len = sU8xU(big, ab, length);
big[len] = '\0';
delete []ab; CString temp(big); result.Format("The return code(返回值): %d\r\n %s", code, temp.GetBuffer()); GetDlgItem(IDC_EDIT2)->SetWindowText(result);
//delete []big; // i don't how to do for this.
}

4. 另外也可以使用这段粗糙的代码实现这个功能:

	CInternetSession mysession;
CHttpConnection *myconn=mysession.GetHttpConnection("www.veno2.com"); CHttpFile *myfile=myconn->OpenRequest("GET","/ag_list");
myfile->SendRequest(); CString mystr;
CString tmp;
while(myfile->ReadString(tmp))
{
mystr+=tmp;
}
//GetDlgItem(IDC_EDIT2)->SetWindowText(mystr); myfile->Close();
myconn->Close();
mysession.Close();
delete myfile;
delete myconn;
myfile=0;
myconn=0;

MFC网页访问的实现示例的更多相关文章

  1. 网页中"IE限制网页访问脚本或ActiveX控件"的提示问题的解决方法

    以前从来没有注意过"IE限制网页访问脚本或ActiveX控件"的提示问题,对于这个小细节问题,虽然感觉很别扭,但一直没考虑解决方法,今天才发现该问题可以轻松解决,以下做个小小记录. ...

  2. 用户对动态PHP网页访问过程,以及nginx解析php步骤

    www.example.com | Nginx | 路由到www.example.com/index.php | 加载nginx的fast-cgi模块 | fast-cgi监听127.0.0.1:90 ...

  3. C++、VC++、MFC网页自动注册、登陆、发帖、留言,QQ注册、QQ申请器源码、注册邮箱源码、自动发帖源码

    C++.VC++.MFC网页自动注册.登陆.发帖.留言,QQ注册.QQ申请器源码.注册邮箱源码.自动发帖源码   参考资料: 自动登录yahoo邮箱http://blog.csdn.net/suisu ...

  4. svn_linux + apache 实现网页访问svn

    CentOS7:搭建SVN + Apache 服务器实现网页访问 1. 安装httpd 安装httpd服务: $ sudo yum install httpd 检查httpd是否安装成功: $ htt ...

  5. JSP简单实现统计网页访问次数

    JSP简单实现统计网页访问次数 需求:统计网页的访问次数 核心思想:利用application对象,将访问次数的信息放入application对象中,每次访问就+1.这里利用了application对 ...

  6. jquery访问ashx文件示例

    转自原文jquery访问ashx文件示例 .ashx 文件用于写web handler的..ashx文件与.aspx文件类似,可以通过它来调用HttpHandler类,它免去了普通.aspx页面的控件 ...

  7. PHP 简易网页访问统计

    传统的网页访问统计,已经有很多,如 51la.百度统计.站长统计 一般都需要引用JS,在你的网页内嵌入JS,这个操作存在风险,并且不可控. 可以考虑使用 [img src.css src.link h ...

  8. MFC网页

    写网页, 选择MFC,MFC应用程序,其他默认,单击确定 项目类型,选Offce,其他默认,单击下一步 默认,单击下一步 文件拓展名,输入html,其他默认,单击下一步 数据库支持,默认,单击下一步 ...

  9. 【新特性速递】FineUIPro/Mvc/Core 全新移动端访问体验(示例首页)!

    移动端支持 虽然 FineUIPro 早在 2016 年就已经完成对移动端的适配工作,并新增了 50 多个官网示例. 并且,我们也新增了一个移动端的首页 http://pro.fineui.com/m ...

随机推荐

  1. 经验总结:按需加载JS和css

    项目中做过这样的事情:所有页面都通过SSI指令 include这样一份public-js.shtml, 用来引入涉及到的js(包括公共的脚本 验证插件 自定义组件等),但是一些没有交互效果的页面根本不 ...

  2. C++动态数组的实现

    #include <iostream> using namespace std; int main() { int n; while(cin>>n) { ]; p[]=; p[ ...

  3. 网易新闻首页iOS

    // //  ViewController.m //  wyy // //  Copyright © 2016年 zm. All rights reserved. // #import "V ...

  4. NAT简单介绍

    NAT本质就是让一群机器公用同一个IP.还有一个重要的用途是保护NAT内的主机不受外界攻击 NAT类型: 1.Full Cone:IPport不受限 Full Cone仅仅做单纯的地址转换,不正确进出 ...

  5. Robotium之Android控件定位实践和建议(Appium/UIAutomator姊妹篇)

    本人之前以前撰文描写叙述Appium和UIAutomator框架是怎样定位Android界面上的控件的. UIAutomator定位Android控件的方法实践和建议 Appium基于安卓的各种Fin ...

  6. nodejs笔记2——请求路由

    对于不同的URL请求,服务器应该有不同的反应.我们要为路由提供请求的URL和其他需要的GET及POST参数,随后路由需要根据这些数据来执行相应的代码.我们需要的所有数据都会包含在request对象中, ...

  7. Android:源码环境下移植第三方的apk内置到ROM(System Image)中

    1. 首先在vendor目录下新建一个the3rdapk的目录,将需要内置的apk丢进去,目录名自己随意定. 2. 在 build/target/product/common.mk最后面,在$(cal ...

  8. c++,纯虚函数与抽象类

    1.纯虚函数的定义: (1)虚函数被“初始化”为0的函数.声明纯虚函数的一般形式是virtual 函数类型 函数名(参数表列) =0;(2)纯虚函数没有函数体:(3)最后面的“=0”并不表示函数返回值 ...

  9. ubuntu卸载vmware

    下面方法摘抄网上方法,经过证实好使 lsmod——显示已载入系统的模块 ps aux : 显示其他用户启动的进程(a)   查看系统中属于自己的进程(x)         启动这个进程的用户和它启动的 ...

  10. 17.1.1.3 Creating a User for Replication

    17.1.1.3 Creating a User for Replication 创建一个用户用于复制: 每个slave 连接到master 使用一个MySQL 用户名和密码, 因此必须有一个user ...