The River is Just a River  
If you're absent from my struggle,then,don't be present for my success

<英文原文也很简单,建议直接看原文,在这翻译,也只是为了自己记录一下>

APIs简介

InternetOpen函数

在使用任何WinInet函数之前,必须先调用InternetOpen函数,这个函数的作用可想而知,主要是为了初始化环境,以便接下来使用WinInet的其他函数。可以说,这个函数创建了一个新的会话(session),就好像socket函数创建了一个新的socket, 调用这个函数将返回一个HINTERNET句柄 ,这个句柄标示了这个session,供其他函数使用。

函数原型:

HINTERNET InternetOpen( IN LPCSTR lpszAgent, IN WORD dwAccessType, IN LPCSTR lpszProxyName, IN LPCSTR lpszProxyBypass, IN WORD dwFlags );

参数含义:

lpszAgent: 字符串(LPCSTR被定义成是一个指向以NULL(‘\0’)结尾的常量字符的指针),指定正在使用网络函数的应用程序。

dwAccessType :指定此session访问网络的方式

lpszProxyName 和lpszProxyBypass 只有在第二个参数是INTERNET_OPEN_TYPE_PROXY时才有效,表示使用代理;其中lpszProxyName类型为字符串,表示代理服务器的名字,lpszProxyBypass 指定代理服务器的地址。

dwFlags:控制此session的行为。此参数的值如果是INTERNET_FLAG_OFFLINE,表示此session为offline模式,如果是INTERNET_FLAG_ASYNC,表示所有的操作必须是异步的。

例如,可以这样调用此函数

HINTERNET hInternet = InternetOpen( "TestApp", INTERNET_OPEN_TYPE_PROXY, "prxy.server.com", 158.55.255.251, INTERNET_FLAG_ASYNC );  

注:具体细节等到例子时候再深究

初始化WinInet后,我们就可以使用其他API了,其中主要有两种方式来使用WinInet,这也是WinInet的功能所在。可以分别称之为:一种是基于URL,另一种方式基于协议。与前者相关的函数是InternetOpenUrl ,后者则是InternetConnect

两者的作用有所不同:

InternetOpenUrl :下载网页,通过HTTP下载图片,通过FTP下载文件

InternetConnect :使用HTTP POST/GET发送或接受数据,在FTP协议中创建,重命名,删除目录或上传下载文件

具体继承关系,可见下图:

接下来详细说一下InternetOpenUrl,因为InternetConnect 暂时还用不上,用的时候再学吧。

函数原型

HINTERNET InternetOpenUrl(IN HINTERNET hInternetSession, IN LPCSTR lpszUrl,IN LPCSTR lpszHeaders, IN DWORD dwHeadersLength, IN DWORD dwFlags,
                IN DWORD dwContext );

这个函数可以用于WinInet支持的所有网络协议,它接受数据,但是不能访问协议本身的内容。此函数先处理URL串,与服务器创建连接,并准备好下载URL所标示的要下载的数据。应用程序接下来可以使用InternetReadFile(数据是文件时使用),或者InternetFindNextFile(数据是目录时使用)接收数据。

 

接下来要写一个简单的小程序实践一下。再写吧。

 

posted on 2012-04-04 21:30  TiffanyZhou  阅读(1124)  评论(0编辑  收藏  举报