📄 afxinet.h
字号:
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1998 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
#ifndef __AFXINET_H_
#define __AFXINET_H_
#ifndef __AFX_H__
#include <afx.h>
#endif
#ifndef _WININET_
#include <wininet.h>
#endif
#ifndef _AFXDLL
#pragma comment(lib, "wininet.lib")
#endif
/////////////////////////////////////////////////////////////////////////////
// classes that are declared in this file
class CInternetSession; // from CObject
class CGopherLocator; // from CObject
class CInternetFile; // from CStdioFile (FILETXT.CPP)
class CHttpFile;
class CGopherFile;
class CInternetConnection;
class CFtpConnection;
class CGopherConnection;
class CHttpConnection;
class CFtpFileFind; // from CFileFind (FILEFIND.CPP)
class CGopherFileFind;
class CInternetException;
/////////////////////////////////////////////////////////////////////////////
#undef AFX_DATA
#define AFX_DATA AFX_CORE_DATA
/////////////////////////////////////////////////////////////////////////////
// Global Functions
BOOL AFXAPI AfxParseURL(LPCTSTR pstrURL, DWORD& dwServiceType,
CString& strServer, CString& strObject, INTERNET_PORT& nPort);
BOOL AFXAPI AfxParseURLEx(LPCTSTR pstrURL, DWORD& dwServiceType,
CString& strServer, CString& strObject, INTERNET_PORT& nPort,
CString& strUsername, CString& strPassword, DWORD dwFlags = 0);
DWORD AFXAPI AfxGetInternetHandleType(HINTERNET hQuery);
// see CInternetException at the bottom of this file
void AFXAPI AfxThrowInternetException(DWORD dwContext, DWORD dwError = 0);
// these are defined by WININET.H
#define AFX_INET_SERVICE_FTP INTERNET_SERVICE_FTP
#define AFX_INET_SERVICE_HTTP INTERNET_SERVICE_HTTP
#define AFX_INET_SERVICE_GOPHER INTERNET_SERVICE_GOPHER
// these are types that MFC parsing functions understand
#define AFX_INET_SERVICE_UNK 0x1000
#define AFX_INET_SERVICE_FILE (AFX_INET_SERVICE_UNK+1)
#define AFX_INET_SERVICE_MAILTO (AFX_INET_SERVICE_UNK+2)
#define AFX_INET_SERVICE_MID (AFX_INET_SERVICE_UNK+3)
#define AFX_INET_SERVICE_CID (AFX_INET_SERVICE_UNK+4)
#define AFX_INET_SERVICE_NEWS (AFX_INET_SERVICE_UNK+5)
#define AFX_INET_SERVICE_NNTP (AFX_INET_SERVICE_UNK+6)
#define AFX_INET_SERVICE_PROSPERO (AFX_INET_SERVICE_UNK+7)
#define AFX_INET_SERVICE_TELNET (AFX_INET_SERVICE_UNK+8)
#define AFX_INET_SERVICE_WAIS (AFX_INET_SERVICE_UNK+9)
#define AFX_INET_SERVICE_AFS (AFX_INET_SERVICE_UNK+10)
#define AFX_INET_SERVICE_HTTPS (AFX_INET_SERVICE_UNK+11)
/////////////////////////////////////////////////////////////////////////////
// classes that are declared in this file
class CInternetSession : public CObject
{
public:
CInternetSession(LPCTSTR pstrAgent = NULL,
DWORD dwContext = 1,
DWORD dwAccessType = PRE_CONFIG_INTERNET_ACCESS,
LPCTSTR pstrProxyName = NULL,
LPCTSTR pstrProxyBypass = NULL,
DWORD dwFlags = 0);
BOOL QueryOption(DWORD dwOption, LPVOID lpBuffer, LPDWORD lpdwBufLen) const;
BOOL QueryOption(DWORD dwOption, DWORD& dwValue) const;
BOOL QueryOption(DWORD dwOption, CString& refString) const;
BOOL SetOption(DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength,
DWORD dwFlags = 0);
BOOL SetOption(DWORD dwOption, DWORD dwValue, DWORD dwFlags = 0);
CStdioFile* OpenURL(LPCTSTR pstrURL,
DWORD dwContext = 1, DWORD dwFlags = INTERNET_FLAG_TRANSFER_ASCII,
LPCTSTR pstrHeaders = NULL, DWORD dwHeadersLength = 0);
CFtpConnection* GetFtpConnection(LPCTSTR pstrServer,
LPCTSTR pstrUserName = NULL, LPCTSTR pstrPassword = NULL,
INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER,
BOOL bPassive = FALSE);
CHttpConnection* GetHttpConnection(LPCTSTR pstrServer,
INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER,
LPCTSTR pstrUserName = NULL, LPCTSTR pstrPassword = NULL);
CHttpConnection* GetHttpConnection(LPCTSTR pstrServer, DWORD dwFlags,
INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER,
LPCTSTR pstrUserName = NULL, LPCTSTR pstrPassword = NULL);
CGopherConnection* GetGopherConnection(LPCTSTR pstrServer,
LPCTSTR pstrUserName = NULL, LPCTSTR pstrPassword = NULL,
INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER);
BOOL EnableStatusCallback(BOOL bEnable = TRUE);
DWORD ServiceTypeFromHandle(HINTERNET hQuery);
// operations
DWORD GetContext() const;
operator HINTERNET() const;
virtual void Close();
// cookies
static BOOL SetCookie(LPCSTR pstrUrl, LPCTSTR pstrCookieName, LPCTSTR pstrCookieData);
static BOOL GetCookie(LPCSTR pstrUrl, LPCTSTR pstrCookieName, LPTSTR pstrCookieData, DWORD dwBufLen);
static DWORD GetCookieLength(LPCSTR pstrUrl, LPCTSTR pstrCookieName);
static BOOL GetCookie(LPCSTR pstrUrl, LPCTSTR pstrCookieName, CString& strCookieData);
// overridables
virtual void OnStatusCallback(DWORD dwContext, DWORD dwInternetStatus,
LPVOID lpvStatusInformation, DWORD dwStatusInformationLength);
// implementation
DECLARE_DYNAMIC(CInternetSession)
~CInternetSession();
protected:
DWORD m_dwContext;
HINTERNET m_hSession;
INTERNET_STATUS_CALLBACK m_pOldCallback;
BOOL m_bCallbackEnabled;
public:
#ifdef _DEBUG
virtual void Dump(CDumpContext& dc) const;
#endif
};
////////////////////////////////////////////////////////////////////////////
// Internet File Access Wrapper
class CInternetFile : public CStdioFile
{
// Constructors
protected:
CInternetFile(HINTERNET hFile, LPCTSTR pstrFileName,
CInternetConnection* pConnection, BOOL bReadMode);
CInternetFile(HINTERNET hFile, HINTERNET hSession,
LPCTSTR pstrFileName, LPCTSTR pstrServer, DWORD dwContext,
BOOL bReadMode);
// Attributes
protected:
HINTERNET m_hFile;
public:
operator HINTERNET() const;
DWORD GetContext() const;
// Operations
BOOL SetWriteBufferSize(UINT nWriteSize);
BOOL SetReadBufferSize(UINT nReadSize);
BOOL QueryOption(DWORD dwOption, LPVOID lpBuffer, LPDWORD lpdwBufLen) const;
BOOL QueryOption(DWORD dwOption, DWORD& dwValue) const;
BOOL QueryOption(DWORD dwOption, CString& refString) const;
BOOL SetOption(DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength,
DWORD dwFlags = 0);
BOOL SetOption(DWORD dwOption, DWORD dwValue, DWORD dwFlags = 0);
// Overridables
virtual LONG Seek(LONG lOffset, UINT nFrom);
virtual UINT Read(void* lpBuf, UINT nCount);
virtual void Write(const void* lpBuf, UINT nCount);
virtual void Abort();
virtual void Flush();
virtual void Close();
virtual DWORD GetLength() const;
virtual BOOL ReadString(CString& rString);
virtual LPTSTR ReadString(LPTSTR pstr, UINT nMax);
virtual void WriteString(LPCTSTR pstr);
// Not supported by CInternetFile
void LockRange(DWORD dwPos, DWORD dwCount);
void UnlockRange(DWORD dwPos, DWORD dwCount);
CFile* Duplicate() const;
virtual void SetLength(DWORD dwNewLen);
// Implementation
public:
virtual ~CInternetFile();
protected:
BOOL m_bReadMode;
DWORD m_dwContext;
HINTERNET m_hConnection;
CString m_strServerName;
UINT m_nWriteBufferSize;
UINT m_nWriteBufferPos;
LPBYTE m_pbWriteBuffer;
UINT m_nReadBufferSize;
UINT m_nReadBufferPos;
LPBYTE m_pbReadBuffer;
UINT m_nReadBufferBytes;
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
friend class CInternetSession;
friend class CFtpConnection;
friend class CHttpConnection;
friend class CGopherConnection;
DECLARE_DYNAMIC(CInternetFile)
};
class CHttpFile : public CInternetFile
{
// Constructors
protected:
CHttpFile(HINTERNET hFile, HINTERNET hSession, LPCTSTR pstrObject,
LPCTSTR pstrServer, LPCTSTR pstrVerb, DWORD dwContext);
CHttpFile(HINTERNET hFile, LPCTSTR pstrVerb, LPCTSTR pstrObject,
CHttpConnection* pConnection);
// Operations
public:
BOOL AddRequestHeaders(LPCTSTR pstrHeaders,
DWORD dwFlags = HTTP_ADDREQ_FLAG_ADD_IF_NEW, int dwHeadersLen = -1);
BOOL AddRequestHeaders(CString& str,
DWORD dwFlags = HTTP_ADDREQ_FLAG_ADD_IF_NEW);
BOOL SendRequest(LPCTSTR pstrHeaders = NULL, DWORD dwHeadersLen = 0,
LPVOID lpOptional = NULL, DWORD dwOptionalLen = 0);
BOOL SendRequest(CString& strHeaders,
LPVOID lpOptional = NULL, DWORD dwOptionalLen = 0);
BOOL SendRequestEx(DWORD dwTotalLen,
DWORD dwFlags = HSR_INITIATE, DWORD dwContext = 1);
BOOL SendRequestEx(LPINTERNET_BUFFERS lpBuffIn,
LPINTERNET_BUFFERS lpBuffOut, DWORD dwFlags = HSR_INITIATE,
DWORD dwContext = 1);
BOOL EndRequest(DWORD dwFlags = 0,
LPINTERNET_BUFFERS lpBuffIn = NULL, DWORD dwContext = 1);
BOOL QueryInfo(DWORD dwInfoLevel, LPVOID lpvBuffer,
LPDWORD lpdwBufferLength, LPDWORD lpdwIndex = NULL) const;
BOOL QueryInfo(DWORD dwInfoLevel, CString& str,
LPDWORD dwIndex = NULL) const;
BOOL QueryInfo(DWORD dwInfoLevel, SYSTEMTIME* pSysTime,
LPDWORD dwIndex = NULL) const;
BOOL QueryInfo(DWORD dwInfoLevel, DWORD& dwResult,
LPDWORD dwIndex = NULL) const;
BOOL QueryInfoStatusCode(DWORD& dwStatusCode) const;
DWORD ErrorDlg(CWnd* pParent = NULL,
DWORD dwError = ERROR_INTERNET_INCORRECT_PASSWORD,
DWORD dwFlags = FLAGS_ERROR_UI_FLAGS_GENERATE_DATA | FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS,
LPVOID* lppvData = NULL);
// Attributes
public:
CString GetVerb() const;
CString GetObject() const;
virtual CString GetFileURL() const;
virtual void Close();
// Implementation
public:
virtual ~CHttpFile();
protected:
CString m_strObject;
CString m_strVerb;
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
friend class CHttpConnection;
friend class CInternetSession;
DECLARE_DYNAMIC(CHttpFile)
};
// class CGopherFile is declared after CGopherLocator, below
////////////////////////////////////////////////////////////////////////////
// Connection types
class CInternetConnection : public CObject
{
public:
CInternetConnection(CInternetSession* pSession, LPCTSTR pstrServer,
INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER,
DWORD dwContext = 1);
// Operations
operator HINTERNET() const;
DWORD GetContext() const;
CInternetSession* GetSession() const;
CString GetServerName() const;
BOOL QueryOption(DWORD dwOption, LPVOID lpBuffer, LPDWORD lpdwBufLen) const;
BOOL QueryOption(DWORD dwOption, DWORD& dwValue) const;
BOOL QueryOption(DWORD dwOption, CString& refString) const;
BOOL SetOption(DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength,
DWORD dwFlags = 0);
BOOL SetOption(DWORD dwOption, DWORD dwValue, DWORD dwFlags = 0);
// Implementation
protected:
HINTERNET m_hConnection;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -