使用WinInet类的学习体会
2002-04-08 09:14
811 查看
下列代码摘录示范了如何创建一个简单的浏览器、下载一张网页、通过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函数。
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类的学习体会
- 使用WinInet类的学习体会
- SVN使用体会,强烈建议大家在学习PHP的时候同时学习SVN使用
- 我学习使用java的一点体会(5)
- 我学习使用java的一点体会(2)
- 学习使用Borland Together心得体会(二)
- 我学习使用java的一点体会(4)
- 我学习使用java的一点体会(3)
- 我学习使用java的一点体会(6)
- ASP.net中的AJAX学习记录之三 体会UpdateMode属性及使用UpdateTriggers
- c#学习体会:使用 ref 和 out 传递数组
- [Java] Swing系列-顶层容器JFrame使用的学习体会
- c#学习体会:使用 ref 和 out 传递数组(downmoon)
- 我学习使用java的一点体会(3)
- IbatisNet的使用学习体会(附demo)
- 我学习使用java的一点体会(8)
- ASP.net中的AJAX学习记录之三 体会UpdateMode属性及使用UpdateTriggers
- c#学习体会:使用 ref 和 out 传递数组(downmoon)
- 我学习使用java的一点体会(8)
- 学习使用java的一点体会