MFC网页访问的实现示例
本示例使用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网页访问的实现示例的更多相关文章
- 网页中"IE限制网页访问脚本或ActiveX控件"的提示问题的解决方法
以前从来没有注意过"IE限制网页访问脚本或ActiveX控件"的提示问题,对于这个小细节问题,虽然感觉很别扭,但一直没考虑解决方法,今天才发现该问题可以轻松解决,以下做个小小记录. ...
- 用户对动态PHP网页访问过程,以及nginx解析php步骤
www.example.com | Nginx | 路由到www.example.com/index.php | 加载nginx的fast-cgi模块 | fast-cgi监听127.0.0.1:90 ...
- C++、VC++、MFC网页自动注册、登陆、发帖、留言,QQ注册、QQ申请器源码、注册邮箱源码、自动发帖源码
C++.VC++.MFC网页自动注册.登陆.发帖.留言,QQ注册.QQ申请器源码.注册邮箱源码.自动发帖源码 参考资料: 自动登录yahoo邮箱http://blog.csdn.net/suisu ...
- svn_linux + apache 实现网页访问svn
CentOS7:搭建SVN + Apache 服务器实现网页访问 1. 安装httpd 安装httpd服务: $ sudo yum install httpd 检查httpd是否安装成功: $ htt ...
- JSP简单实现统计网页访问次数
JSP简单实现统计网页访问次数 需求:统计网页的访问次数 核心思想:利用application对象,将访问次数的信息放入application对象中,每次访问就+1.这里利用了application对 ...
- jquery访问ashx文件示例
转自原文jquery访问ashx文件示例 .ashx 文件用于写web handler的..ashx文件与.aspx文件类似,可以通过它来调用HttpHandler类,它免去了普通.aspx页面的控件 ...
- PHP 简易网页访问统计
传统的网页访问统计,已经有很多,如 51la.百度统计.站长统计 一般都需要引用JS,在你的网页内嵌入JS,这个操作存在风险,并且不可控. 可以考虑使用 [img src.css src.link h ...
- MFC网页
写网页, 选择MFC,MFC应用程序,其他默认,单击确定 项目类型,选Offce,其他默认,单击下一步 默认,单击下一步 文件拓展名,输入html,其他默认,单击下一步 数据库支持,默认,单击下一步 ...
- 【新特性速递】FineUIPro/Mvc/Core 全新移动端访问体验(示例首页)!
移动端支持 虽然 FineUIPro 早在 2016 年就已经完成对移动端的适配工作,并新增了 50 多个官网示例. 并且,我们也新增了一个移动端的首页 http://pro.fineui.com/m ...
随机推荐
- spring 事务 笔记3.1
Spring事务 以前的事务都是编程式事务,需要开启和关闭,然后程序写在这里面 spring,声明式事务 Spring事务隔离级别 DEFAULT 使用数据库默认隔离级别 READ_UNCOMMITT ...
- 转:STL使用入门( Using STL)
1 介绍 我最开始结束C++编程是从DOS下的Borland C++开始的.那时他们在最新版本3.1中就包含了一套模板库用来做collection.那真是个好东东.当我开始使用Visual C++ 2 ...
- Linux和windows下的shutdown命令
Linux下的shutdown命令 shutdown [options] [time] [wall] options: --help 获取帮助 -h 关机 -r 重启 -c 取消 -k 仅显示警告信息 ...
- IOS中Key-Value Coding (KVC)的使用具体解释
kvc.键值编码,是一个非正式的协议.它提供一种机制来间接訪问对象的属性. 直接訪问对象是通过调用訪问器的方法实现,而kvc不须要调用訪问器的设置和获取方法.能够直接訪问对象的属性. 以下介绍一下kv ...
- android应用如何启动另外一个apk应用
在开发的过程中,经常会遇到在一个应用中启动另外一个apk应用的情况 问题的核心点在于我们要拿到第三方apk的package名称跟class名称, 如:package名称是com.funcity.tax ...
- HTML高级选项卡(1)————表标签
利用上述表格属性,能够简单的创建一个表格.并随意的分割行和列. <html> <head> <title>表格的应用</title> </head ...
- listview 拖动item效果实现
listview 拖动item效果实现 效果图如下: 拖拽前: 拖拽后: 首先参考源码中:TouchInterceptor 类,该类会在下面给出: 第一步:主类: /** * */ packag ...
- 一天一个类--NIO 之Buffer
java.nio --- 定义了 Buffer 及其数据类型相关的子类.其中被 java.nio.channels 中的类用来进行 IO 操作的 ByteBuffer 的作用非常重要. java.n ...
- Ural 1313 - Some Words about Sport
Ural doctors worry about the health of their youth very much. Special investigations showed that a l ...
- 基于visual Studio2013解决算法导论之026二叉树
题目 二叉树实现 解决代码及点评 #include<stdio.h> #include <malloc.h> #include <stdlib.h> typ ...