本示例使用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. genymotion下载出现Unable to create virtual device,Server returned HTTP status code 0.

    解决方法:

  2. Solr4.7从文件创建索引

    索引数据源并不会一定来自于数据库.XML.JSON.CSV这类结构化数据,很多时候也来自于PDF.word.html.word.MP3等这类非结构化数据,从这类非结构化数据创建索引,solr也给我们提 ...

  3. 如何修改Sublime 侧边栏Sidebar的颜色

    参考自:http://blog.csdn.net/a497393102/article/details/10563791 首先要找到 Default.sublime-theme 文件, 点击 subl ...

  4. 学校作业-Dp练习

    题目 ★Stringsobits01 串  考虑排好序的 N(N<=31)位二进制数.  你会发现,这很有趣.因为他们是排列好的,而且包含所有可能的长度为 N 且含有 1 的个数小于等于 L(L ...

  5. java学习之实现文件的复制

    package com.io; import java.io.*; import java.text.SimpleDateFormat; import java.util.Date; /** * 文件 ...

  6. float 覆盖元素的问题

    <span class="right-span"><a href="/xxx/" class="btn">增加Ser ...

  7. ThinkPHP - I 函数

    ThinkPHP函数详解:I方法   浏览:144722 发布日期:2013/06/01 分类:文档教程 关键字: 函数 ThinkPHP的I方法是3.1.3版本新增的,如果你是之前的3.*版本的话, ...

  8. BZOJ 2718: [Violet 4]毕业旅行( 最长反链 )

    一不小心速度就成了#1.... 这道题显然是求最长反链, 最长反链=最小链覆盖.最小链覆盖就是先做一次floyd传递闭包, 再求最小路径覆盖. 最小路径覆盖=N - 二分图最大匹配. 所以把所有点拆成 ...

  9. javascript 数组部分

    <html> <body> <script type="text/javascript"> var arr = new Array(6) arr ...

  10. 【转】CentOS 6 服务器安全配置指南

    原文连接: CentOS 6 服务器安全配置指南(通用) Linux 是一个开放式系统,可以在网络上找到许多现成的程序和工具,这既方便了用户,也方便了黑客,因为他们也能很容易地找到程序和工具来潜入 L ...