使用WinInet类的学习体会

原创 2002年04月08日 09:14:00

下列代码摘录示范了如何创建一个简单的浏览器、下载一张网页、通过FTP操作一个文件和查找一个Gopher文件。它们并不是一个完整的例子,其中不包含异常处理,只是本人最近写程序的一点总结而已。

1 创建一个非常简单的浏览器
#include <afxinet.h>
//假设URL的名字已经被初始化了
CInternetSession session("My Session");
CStdioFile* pFile=NULL;
//使用一个URL,并显示一张网页
while(lpszURL=DisplayPage(...))
{
   pFile=session.OpenURL(lpszURL);
   while(pFile->Read(szBuff,1024)>0)
   {
          //读取文件...
   }
   delete pFile;
}
session.Close();

2 下载一张网页
#include <afxinet.h>
//假设服务器、端口号和URL名字已经初始化了
CInternetSession session("My Session");
CHttpConnection* pSever=NULL;
CHttpFile* pFile=NULL;
try
{
  CString strServerName;
  INTERNET_PORT nPort;

  pServer=session.GetHttpConnection(strServerName,nPort);
  pFile=pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET,strObject);
  pFile->AddRequestHeaders(szHeaders);
  pFile->SendRequest();
  pFile->QueryInfoStatusCode(dwRet);

  if(dwRet==HTTP_STATUS_OK)
  {
    UINT nRead=pFile->Read(szBuff,1023);
 while(nRead>0)
 {
    //读取文件
 }
  }
  delete pFile;
  delete pServer;
}
catch(CInternetException* pEx)
{
  //捕捉WinInet的错误
}
session.Close();

3 通过FTP操作一个文件
#include <afxinet.h>
//假设服务器名和文件名已经初始化了
CInternetSession session("My FTP Session");
CFtpConnection* pConn=NULL;

pConn=session.GetFtpConnect(lpszServerName);
//取得文件
if(!pConn->GetFile(pstrRemoteFile,pstrLocalFile))
   //显示一个错误
delete pConn;
session.Close();

4重新获得一个Gopher目录
#include <afxinet.h>
//假设文件名已经初始化了
CInternetSession session("My Gopher Session");
CGopherConnection* pConn=NULL;
CGopherFileFind* pFile;

pConn=session.GetGopherConnection("gopher.yousite.com");
pFile=new CGopherFileFind(pConn);
BOOL bFound=pFile->FindFile(lpszFileToFind);
while(bFound)
{
  bFound=pFile->FindNextFile();
  //重新获得找到的文件属性
}
delete pFile;
delete pConn;
session.Close();

当在使用WinInet类库时,用户可以使用应用程序的CInternetSession对象的成员函数
OnStatusCallback来获取状态信息。如果用户继承了其自己的CInternetSession对象,
编写了超越函数OnStatusCallback并允许状态的回调,MFC将把此次国际互连网对话的
所有活动的进度信息作为参数,调用用户的OnStatusCallback函数。

WinInet的几个方法类的说明参考

MFC库参考 CInternetSession类 创建并初始化单个或多个同时进行的Internet会话,如有必要,可描述您与代理服务器的连接。 CInternetSession类:p...
  • thanklife
  • thanklife
  • 2017年05月03日 13:11
  • 176

一个利用WinInet通信的简单客户端Demo

WinInet简介 WinInet是微软提供的对Windows客户端与服务器通信的API,它是一个网络编程接口,包含了HTTP、FTP和Gopher,借助于这些接口,开发者不需要了解底层的一些知识,只...
  • u011645174
  • u011645174
  • 2014年01月20日 14:20
  • 1608

使用WinINet和WinHTTP实现Http访问

使用WinINet和WinHTTP实现Http访问 Http访问有两种方式,GET和POST,就编程来说GET方式相对简单点,它不用向服务器提交数据,在这个例程中我使用POST方式,提交...
  • thanklife
  • thanklife
  • 2017年05月03日 17:28
  • 570

简单的WinInet编程

windows程序 // tt.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #pragma comment(li...
  • liujiayu2
  • liujiayu2
  • 2015年09月02日 22:51
  • 482

MSDN:使用 MFC WinInet 类编写 Internet 客户端应用程序

使用 MFC WinInet 类编写 Internet 客户端应用程序 Visual Studio .NET 2003 每一个 Internet 客户端应用程序的基础都...
  • thanklife
  • thanklife
  • 2017年05月18日 16:40
  • 116

VC++利用WinInet技术开发FTP客户端程序

摘要:WinInet是微软MFC类库提供的Win32Internet扩展接口,利用WinInet开发人员可以方便地编写出Internet客户端程序。本文主要阐述利用WinInet在VC 2005中实现...
  • educast
  • educast
  • 2014年09月10日 08:58
  • 3064

WinInet下载文件

Uses WinInet (1)HTTP下载 Function WWWDownFile(Const FTURL,LocalFile : String) : Boolean; //下载函数. Co...
  • rocklee
  • rocklee
  • 2016年03月18日 15:30
  • 675

使用WinINet和WinHTTP实现Http访问

使用WinINet和WinHTTP实现Http访问 Http访问有两种方式,GET和POST,就编程来说GET方式相对简单点,它不用向服务器提交数据,在这个例程中我使用POST方式,提交数据valu...
  • yangshuangtao
  • yangshuangtao
  • 2016年08月11日 23:04
  • 2001

VC++ 用WinInet发送HTTP请求和上传文件

用VC++ WinINet 发送HTTP POST的代码void CxxxApp::HttpRequest(std::pair nvps[], std::wstring files, std::str...
  • wut55
  • wut55
  • 2015年12月28日 12:49
  • 939

[http] WinInet发送或接收函数超时的bug & 解决办法

项目中有http的IO操作 使用了WinInet进行网络数据的发送和接收  但是使用中发现 WinInet的读写函数(HttpSendRequest和InternetReadFile)经常会卡住 函数...
  • felicityWSH
  • felicityWSH
  • 2017年04月10日 16:16
  • 534
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用WinInet类的学习体会
举报原因:
原因补充:

(最多只允许输入30个字)