当前位置: 首页 > news >正文

WinINet function(1)

 

一.Url相关函数

1.InternetCreateUrl

Cracks a URL into its component parts.

#define URL_STRING_TEST    "http://www.cnblogs.com/Clingingboy/archive/2011/11/20/2256200.html"
void main()
{   
    TCHAR szHostName[128];
    TCHAR szUrlPath[256];
    URL_COMPONENTS crackedURL;
    ZeroMemory(&crackedURL, sizeof (URL_COMPONENTS));
    crackedURL.dwStructSize     = sizeof (URL_COMPONENTS);
    crackedURL.lpszHostName     = szHostName;
    crackedURL.dwHostNameLength = sizeof(szHostName);
    crackedURL.lpszUrlPath      = szUrlPath;
    crackedURL.dwUrlPathLength  = sizeof(szUrlPath);
    InternetCrackUrl(URL_STRING_TEST,(DWORD)strlen(URL_STRING_TEST),0,&crackedURL);
}

2.InternetCreateUrl

Creates a URL from its component parts.

DWORD urlLength;
InternetCreateUrl(&crackedURL,ICU_ESCAPE,szUrlPath,&urlLength);

3.InternetCanonicalizeUrl

Canonicalizes a URL, which includes converting unsafe characters and spaces into escape sequences.

InternetCanonicalizeUrl("http://www.xxx.com/viewthread.php?action=printable&tid=99     ",szUrlPath,&urlLength,ICU_ENCODE_SPACES_ONLY);

4.InternetCombineUrl

Combines a base and relative URL into a single URL.

InternetCombineUrl("http://www.xxx.com/","2256200.html",szUrlPath,&urlLength,ICU_BROWSER_MODE);

二.Internet基本应用相关函数

1.InternetOpen

Initializes an application's use of the WinINet functions.

2.InternetOpenUrl

Opens a resource specified by a complete FTP, Gopher, or HTTP URL.

3.InternetReadFile

Reads data from a handle opened by the InternetOpenUrl, FtpOpenFile, GopherOpenFile, or HttpOpenRequest function

4.InternetCloseHandle

Closes a single Internet handle.

应用1:打开因特网上指定的文件

image

void Download()
{

    DWORD byteread=0;
    char buffer[100];
    memset(buffer,0,100);
    HINTERNET internetopen;


    internetopen=InternetOpen("Testing",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
    if (internetopen==NULL)
    { 
        cout<<"Internet open failed!"<<endl;
        return;
    }
    HINTERNET internetopenurl;
    internetopenurl=InternetOpenUrl(internetopen,"http://www.cnblogs.com/Clingingboy/archive/2011/11/20/2256200.html",NULL,0,INTERNET_FLAG_RELOAD,0);  
    if (internetopenurl==NULL)
    { 
        cout<<"Internet open url failed!"<<endl; 
        goto there;
    }

    BOOL hwrite;
    DWORD written;
    HANDLE createfile;
    createfile=CreateFile("C://a.html",GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
    if (createfile==INVALID_HANDLE_VALUE)
    {  
        cout<<"Create File failed!"<<endl;
        goto next;
    }

    BOOL internetreadfile;
    while(1)
    {
        internetreadfile=InternetReadFile(internetopenurl,buffer,sizeof(buffer),&byteread);
        if(byteread==0)  
            break;
        hwrite=WriteFile(createfile,buffer,sizeof(buffer),&written,NULL);
        if (hwrite==0)
        {
            cout<<"Write to file failed!"<<endl;
            goto here;
        }
    }

    cout<<"Finished downloading!"<<endl;

here:
    CloseHandle(createfile);
next: 
    InternetCloseHandle(internetopenurl);
there:
    InternetCloseHandle(internetopen);

}

三.连接检查函数

1.InternetCheckConnection

Allows an application to check if a connection to the Internet can be established.

BOOL result=InternetCheckConnection(URL_STRING_TEST,FLAG_ICC_FORCE_CONNECTION,0);

2.InternetAttemptConnect

Attempts to make a connection to the Internet.

BOOL result=InternetAttemptConnect(0);

相关文章:

  • Archlinux KDE环境中文化
  • 【转载】ESFramework介绍之(31)―― 消息分类及对应的处理器
  • 表空间的增删改
  • cs1003:语法错误,应输入“:“
  • dsp中的gel文件
  • 代码质量与上线压力
  • 开启Apache Server Status
  • C# 禁止控件重绘(绘制)
  • 基于lucene实现自己的推荐引擎
  • ubuntu网络配置文件
  • linux 文件名中间有空格 如何复制
  • PPP协议认证
  • [转] C#代码检查工具:stylecop
  • Android的一些开源项目集锦 以备以后研究
  • session.createSQLQuery()方法去执行删除无效
  • ES6指北【2】—— 箭头函数
  • 自己简单写的 事件订阅机制
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • Bootstrap JS插件Alert源码分析
  • create-react-app做的留言板
  • Fundebug计费标准解释:事件数是如何定义的?
  • JavaScript实现分页效果
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Lsb图片隐写
  • maven工程打包jar以及java jar命令的classpath使用
  • Python socket服务器端、客户端传送信息
  • python_bomb----数据类型总结
  • SAP云平台里Global Account和Sub Account的关系
  • sublime配置文件
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 分享一份非常强势的Android面试题
  • 聊聊flink的TableFactory
  • 探索 JS 中的模块化
  • 微信开放平台全网发布【失败】的几点排查方法
  • 一天一个设计模式之JS实现——适配器模式
  • 优秀架构师必须掌握的架构思维
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #include
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (42)STM32——LCD显示屏实验笔记
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (备忘)Java Map 遍历
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (六)vue-router+UI组件库
  • (南京观海微电子)——COF介绍
  • (十)T检验-第一部分
  • (正则)提取页面里的img标签
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .apk文件,IIS不支持下载解决