使用 InternetReadFile 来获取文件
来源:互联网 发布:添加usb打印机端口 编辑:程序博客网 时间:2024/06/05 01:05
loadTOCNode(1, 'summary');
使用 WinInet API, InternetReadFile 返回下列缓冲区:
<body> <h1> 未找到 HTTP/1.0 406HTTP 否接受对象 </h1> </body>
更多信息
loadTOCNode(1, 'moreinformation');
这是 HTTP 服务器特定错误。 MicrosoftIIS 当没有正确接受头时可能返回该错误: * 接受 " / * ") (HTTP 请求中。 可以以下列来添加这些标头:
InternetOpenUrl(),
HttpSendRequest(),
HttpAddRequestHeaders()
注意, 其他 HTTP 服务器可能或不以相同方式行为。 以下代码演示了如何传输任何类型的文件与 WinInet API:
BOOL GetFile (HINTERNET IN hOpen, // Handle from InternetOpen()
CHAR *szUrl, // Full URL
CHAR *szFileName) // Local file name
{
DWORD dwSize;
CHAR szHead[] = "Accept: */*\r\n\r\n";
VOID * szTemp[25];
HINTERNET hConnect;
FILE * pFile;
if ( !(hConnect = InternetOpenUrl ( hOpen, szUrl, szHead,
lstrlen (szHead), INTERNET_FLAG_DONT_CACHE, 0)))
{
cerr << "Error !" << endl;
return 0;
}
if ( !(pFile = fopen (szFileName, "wb" ) ) )
{
cerr << "Error !" << endl;
return FALSE;
}
do
{
// Keep coping in 25 bytes chunks, while file has any data left.
// Note: bigger buffer will greatly improve performance.
if (!InternetReadFile (hConnect, szTemp, 50, &dwSize) )
{
fclose (pFile);
cerr << "Error !" << endl;
return FALSE;
}
if (!dwSize)
break; // Condition of dwSize=0 indicate EOF. Stop.
else
fwrite(szTemp, sizeof (char), dwSize , pFile);
} // do
while (TRUE);
fflush (pFile);
fclose (pFile);
return TRUE;
}
相同任务可完成与 WinInet MFC 类: 以下列方式
#include <afx.h>
#include <afxinet.h>
BOOL GetFile (CHAR *szUrl, CHAR *szFileName)
{
TCHAR sz[1024];
CInternetSession session (_T("MyTest agent"), 1,
INTERNET_OPEN_TYPE_DIRECT);
CStdioFile* pFile = NULL;
CHAR szHead[] = "Accept: */*\r\n\r\n";
DWORD nRead;
CFile myFile;
CFileException fileException;
if ( !myFile.Open (szFileName, CFile::modeCreate | CFile::modeReadWrite,
&fileException ) )
{
cerr << "Can't open file: " << szFileName
<< " error = " << fileException.m_cause <<"\n";
return FALSE;
}
try
{
pFile = session.OpenURL (szUrl, 1, INTERNET_FLAG_RELOAD
|INTERNET_FLAG_TRANSFER_BINARY,
szHead, -1L);
}
catch (CInternetException *pEx)
{
cerr <<"OpenUrl failed: "<< pEx-> m_dwError << endl;
return FALSE;
}
do
{
nRead = pFile->Read(sz, 1023);
if (nRead != 0)
myFile.Write (sz, nRead);
}
while (nRead != 0);
myFile.Close();
pFile->Close();
if (pFile != NULL)
delete pFile;
session.Close();
return TRUE;
}
转自:http://www.mantian.com/viewthread.php?tid=5417
- 使用 InternetReadFile 来获取文件
- 使用 InternetReadFile 来获取文件
- 使用wininet的InternetReadFile下载文件
- 使用wininet的InternetReadFile下载文件
- InternetReadFile 下载文件
- 使用GridView来获取xml文件数据
- 如何使用Properties来获取文件内容
- InternetOpen, InternetOpenUrl, InternetReadFile 获取网页源代码
- QT使用QFileInfo类来获取文件信息
- 使用InternetReadFile时要注意读取完整数据
- InternetReadFile函数
- ios 中使用 storyboard 来初始化view controller . 从xib文件中获取view
- 程序猿看过来,教你如何使用apktool反编译apk获取资源文件
- Qt下使用DbgHelp和SetUnhandledExceptionFilter来获取Crash log/dump文件
- 从文件描述符来获取文件名
- 函数来获取当前的trace文件
- 反射机制来获取资源文件/
- 通过系统相册来获取文件绝对路径
- 第五周项目四:学生类
- 三角类
- Bash
- FLEX alert.show() flag 详细值
- 如何分析自己的处境
- 使用 InternetReadFile 来获取文件
- .net获取系统当前时间
- for update和for update of 的区别
- 校验和算法
- Oracle数据库创建表空间及为用户指定表空间
- 公钥,私钥和数字签名这样最好理解
- 第五周项目一:三角形类(默认构造函数)@(2)
- git log
- 反射