WinInet类使用方法

使用WinInet类有许多优越之处,它提供了对GopherHTTPFTP等公共Internet协议的访问方法,其中包括:

1)      CInternetSession

2)      CInternetConnection

3)      CInternetFile

4)      CHttpConnection

5)      CGopherFile

6)      CGopherConnection

7)      CFtpConnection

8)      CFileFind

9)      CFtpFileFind

10)   CGopherFileFind

11)   CGopherLocator

12)   CInternetException

使用WinInet类编程方法如下:

1.       创建CInternetSession类对象,创建并初始化Internet会话。

2.       建立CInternetSession对象与服务器的连接。该连接由CInternetConnect对象代表;可以通过CInternetSession::GetHttpConnectionCInternetSession::GetFTPConnectionCInternet::GetGopherConnection函数分别打开对应于三种特定协议的连接,它们分别由CInternetConnection的派生类CHttpConnectionCFtpConnectionCGopherConnection对象代表。

3.       在连接时,可以通过调用CInternetSession::QueryOptionCInternetSession::SetOption函数查询或设置Internet请求选项。

4.       客户应用程序在进行某些操作时,要耗费相当长的时间,因此有必要向用户反馈当前数据处理的进程信息。这就需要派生自己的CInternetSession对象,重载OnStatusCallback函数实现回调程序的功能,并调用CInternetSession::EnableStatusCallback函数允许使用回调程序以监视会话的状态。

5.       以上几个步骤建立了客户应用程序的工作环境,但它们并没有对服务器进行任何操作,必须在此基础上实现客户应用程序的实际功能。通常客户应用程序的主要功能是处理服务器的数据,因此应该获得服务器的CInternetFile实例,可以通过两种方法创建该实例:

1)         分别调用CGopherConnection::OpenFileCFtpConnection::OpenFileCHttpConnection::OpenRequest函数得到CInternetFileCGopherFileCHttpFile对象指针,其中CGopherFileCHttpFileCInternetFile和派生类,对于FTP直接使用基类CInternetFile,此外CHttpConnectionCFtpConnectionCGopherConnection对象由步骤2创建。

2)         另外一种更简单的方法是:无需通过步骤2建立连接,直接通过调用CInternetSession::OpenURL,该函数解析指定的URL,建立与由URL所代表的服务器之间的连接,然后返回一个只读的CInternetFile对象。该函数并不局限于某个特定的协议类型,它能够处理任何FTP URLHTTP URLGopher URL或本地文件。

6.       得到服务器文件后,就可以通过调用文件对象的Read函数和Write函数读取或写入文件。正如前面所讲,对于FTP,所使用的文件对象为CInternetFile类,而HTTPGopher则使用CInternetFile的派生类CHttpFileCGopherFile类对象。

7.       为了提高程序的容错性和稳定性,对可能出现的问题进行处理是非常有必要的。对于Internet客户,需要使用CInternetException类对象处理所有可知的常规的Internet异常类型。

8.       结束Internet会话,销毁CInternetSession对象。

原文地址:https://www.cnblogs.com/Roarsun/p/2864821.html