zoukankan      html  css  js  c++  java
  • 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对象。

  • 相关阅读:
    正则表达式
    抽象
    面向对象
    this关键字
    http协议
    URL
    Ajax
    PHP命名空间
    PDO
    异常
  • 原文地址:https://www.cnblogs.com/Roarsun/p/2864821.html
Copyright © 2011-2022 走看看