使用 MFC WinInet 类编写 Internet 客户端应用程序
Visual Studio .NET 2003
每一个 Internet 客户端应用程序的基础都是 Internet 会话。MFC 将 Internet 会话作为 CInternetSession 类的对象来实现。使用此类可以创建一个 Internet 会话或几个同时进行的会话。
若要与服务器通信,需有一个 CInternetConnection 对象和 CInternetSession。可以通过使用CInternetSession::GetFtpConnection、CInternetSession::GetHttpConnection 或 CInternetSession::GetGopherConnection 来创建 CInternetConnection。这些调用中的每一个都是特定于协议类型的。这些调用不打开服务器上的文件读取或写入。如果要读取或写入数据,必须以一个单独的步骤打开文件。
对于大多数 Internet 会话,CInternetSession 对象与 CInternetFile 对象一起“携手”工作:
- 对 Internet 会话必须创建 CInternetSession 的实例。
- 如果 Internet 会话读取或写入数据,必须创建 CInternetFile(或其子类 CHttpFile 或 CGopherFile)的实例。最简单的读取数据的方法是调用 CInternetSession::OpenURL。此函数分析您提供的通用资源定位器 (URL),打开与该 URL 指定的服务器的连接,并返回只读的 CInternetFile 对象。CInternetSession::OpenURL 不特定于某个协议类型,即同样的调用对任何 FTP、HTTP 或 gopher URL 都适用。CInternetSession::OpenURL 甚至对本地文件也适用(返回 CStdioFile 而不是CInternetFile)。
- 如果 Internet 会话不读取或写入数据,但执行其他任务(如在 FTP 目录中删除文件),可能不需要创建 CInternetFile 的实例。
创建 CInternetFile 对象有两种方法:
- 如果使用 CInternetSession::OpenURL 建立服务器连接,则对 OpenURL 的调用返回 CStdioFile。
- 如果使用 CInternetSession::GetFtpConnection、GetGopherConnection 或 GetHttpConnection 建立服务器连接,则必须分别调用 CFtpConnection::OpenFile、CGopherConnection::OpenFile 或 CHttpConnection::OpenRequest,分别返回 CInternetFile、CGopherFile 或 CHttpFile。
根据所创建的是基于 OpenURL 的一般 Internet 客户端还是使用 GetConnection 函数之一的协议特定的客户端,实现 Internet 客户端应用程序的步骤是不同的。