亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? myhttpclient.h

?? 自定義HttpClient類
?? H
?? 第 1 頁 / 共 5 頁
字號:
#pragma once

#include <windows.h>			// for generic types, .. etc
#include <wininet.h>			// for the windows internet functions
#include <crtdbg.h>				// for the _ASSERTE macro
#include <objbase.h>			// for ::CoCreateGuid

#include <utility>				// for the STL pair type
#include <map>					// for the STL multimap container
#include <vector>				// for the STL vector container

#include "MyException.h"		// for exception classes
#include "SafeInt.hpp"			// for the SaftInt class

#pragma warning (push)
#pragma warning (disable: 4290)	// avoids 'C++ Exception Specification ignored' message
#pragma warning (disable: 4996)	// avoids 'This function or variable may be unsafe' message

/*!
 * \brief	The namespace of the Ryeol's library
 *
 * This is the namespace for source codes written by Jo Hyeong-ryeol.
 */
namespace Ryeol {

///////////////////////////////////////// Global constant definitions /////////////////////////////////////////
/*!
 * \brief	Default flags used by the CHttpClient class to open a HTTP request
 * 
 * These flags are default flags used by the CHttpClient to open a HTTP request. These flags
 * are actually the dwFlags parameter of the ::HttpOpenRequest function of the WinInet API.
 * For more detailed information about this flags, see microsoft's SDK documentation.
 *
 * \sa CHttpClientT<HttpTool, HttpEncoder>::RequestGetEx
 * \sa CHttpClientT<HttpTool, HttpEncoder>::BeginPostEx
 * \sa CHttpClientT<HttpTool, HttpEncoder>::BeginUploadEx
 * \sa CHttpClientT<HttpTool, HttpEncoder>::RequestPostEx
 * \sa CHttpClientT<HttpTool, HttpEncoder>::RequestUploadEx
 */
enum HttpClientDefFlag
{
	HTTPCLIENT_DEF_REQUEST_FLAGS				= INTERNET_FLAG_HYPERLINK
												| INTERNET_FLAG_KEEP_CONNECTION
												| INTERNET_FLAG_NO_UI
												| INTERNET_FLAG_RESYNCHRONIZE
	//!< The default flag which causes the CHttpClient to use the cache if a cached copy exists.

	, HTTPCLIENT_DEF_REQUEST_FLAGS_NOCACHE		= INTERNET_FLAG_HYPERLINK
												| INTERNET_FLAG_KEEP_CONNECTION
												| INTERNET_FLAG_NO_UI
												| INTERNET_FLAG_RESYNCHRONIZE
												| INTERNET_FLAG_NO_CACHE_WRITE
												| INTERNET_FLAG_PRAGMA_NOCACHE
												| INTERNET_FLAG_RELOAD
	//!< The default flag which causes the CHttpClient not to use the cache.
} ;


/*!
 * \brief	These error codes represent the error occurred while processing an operation.
 * 
 * These error codes are custom error codes only for classes in this file.
 */
enum HttpClientErrorCode
{
	HTTPCLIENT_ERR_NOT_SPECIFIED						= 0		//!< Error was not occurred or not specified.

	// Normal error
	, HTTPCLIENT_ERR_UNEXPECTED_ERROR					= 100	//!< Unknown error occurred.
	, HTTPCLIENT_ERR_OUT_OF_RANGE						= 101	//!< The index is out of range.
	, HTTPCLIENT_ERR_OUT_OF_MEMORY						= 102	//!< The memory has been exhausted.
	, HTTPCLIENT_ERR_INVALID_URL						= 103	//!< The requested URL is not a valid URL.
	, HTTPCLIENT_ERR_POST_NOT_STARTED					= 104	//!< The post context is not started yet.
	, HTTPCLIENT_ERR_READ_UNEXPECTED_SIZE				= 105	//!< Couldn't read expected bytes from a file.
	, HTTPCLIENT_ERR_POST_NOT_FINISHED					= 106	//!< The post context has not been finished yet.
	, HTTPCLIENT_ERR_INTERNET_PORT_NOT_VALID			= 107	//!< The port number is not valid.
	, HTTPCLIENT_ERR_STD_EXCEPTION						= 108	//!< std::exception occurred.
	, HTTPCLIENT_ERR_ENCODED_URL_NOT_VALID				= 109	//!< The encoded URL is not valid.
	, HTTPCLIENT_ERR_INVALID_UTF8_CHARACTER				= 110	//!< The UTF8 string contains an invalid character.
	, HTTPCLIENT_ERR_UNEXPECTED_ARITHMETIC_ERROR		= 111	//!< An unexpected arithmetic error has been occurred.
	, HTTPCLIENT_ERR_ARITHMETIC_OVERFLOW				= 112	//!< An arithmetic overflow error has been occurred.
	, HTTPCLIENT_ERR_INT_DIVIDE_BY_ZERO					= 113	//!< An interger divide by zero exception has been occurred.
	, HTTPCLIENT_ERR_FILE_ALEADY_EXISTS					= 114	//!< A file aleady exists. So it doesn't overwrite it.


	// Normal error (which has a win32 error code) - Reserved


	// WinInet error (which has a win32 error code)
	, HTTPCLIENT_ERR_QUERYINFO_FAILED					= 400	//!< ::HttpQueryInfo failed.
	, HTTPCLIENT_ERR_INTERNETREADFILE_FAILED			= 401	//!< ::InternetReadFile failed.
	, HTTPCLIENT_ERR_INTERNETOPEN_FAILED				= 402	//!< ::InternetOpen failed.
	, HTTPCLIENT_ERR_INTERNETCONNECT_FAILED				= 403	//!< ::InternetConnect failed.
	, HTTPCLIENT_ERR_HTTPOPENREQUEST_FAILED				= 404	//!< ::HttpOpenRequest failed.
	, HTTPCLIENT_ERR_HTTPADDREQUESTHEADERS_FAILED		= 405	//!< ::HttpAddRequestHeaders failed.
	, HTTPCLIENT_ERR_HTTPSENDREQUEST_FAILED				= 406	//!< ::HttpSendRequest failed.
	, HTTPCLIENT_ERR_HTTPSENDREQUESTEX_FAILED			= 407	//!< ::HttpSendRequestEx failed.
	, HTTPCLIENT_ERR_INTERNETWRITEFILE_FAILED			= 408	//!< ::InternetWriteFile failed.
	, HTTPCLIENT_ERR_HTTPENDREQUEST_FAILED				= 409	//!< ::HttpEndRequest failed.
	, HTTPCLIENT_ERR_INTERNETSETOPTION_FAILED			= 410	//!< ::InternetSetOption failed.

	// Win32 API error (which has a win32 error code)
	, HTTPCLIENT_ERR_WIDECHARTOMULTIBYTE_FAILED			= 600	//!< ::WideCharToMultiByte failed.
	, HTTPCLIENT_ERR_MULTIBYTETOWIDECHAR_FAILED			= 601	//!< ::MultiByteToWideChar failed.
	, HTTPCLIENT_ERR_READFILE_FAILED					= 602	//!< ::ReadFile failed.
	, HTTPCLIENT_ERR_OPENFILE_FAILED					= 603	//!< OpenFile (::CreateFile) failed.
	, HTTPCLIENT_ERR_SETFILEPOINTER_FAILED				= 604	//!< ::SetFilePointer failed.
	, HTTPCLIENT_ERR_GETFILESIZE_FAILED					= 605	//!< ::GetFileSize failed.
	, HTTPCLIENT_ERR_WRITEFILE_FAILED					= 606	//!< ::WriteFile failed.

	// user-defined error
	, HTTPCLIENT_ERR_USER								= 1000	//!< Beginning of the user-defined error code.
																//! \nThe maximum value is HTTPCLIENT_ERR_USER + 99.
} ;

template <typename HttpTool, typename HttpEncoder> class CHttpClientT ;

///////////////////////////////////////// Global constant definitions /////////////////////////////////////////

///////////////////////////////////////// httpclientexception /////////////////////////////////////////
/*!
 * \brief	The standard exception class used by classes in this file. (Ansi Ver.)
 *
 * This class represents an exception occurred in HTTP client classes. All classes in this file
 * will throw this class when an error has been occurred.
 */
class httpclientexceptionA : public errmsg_exceptionA {
public:
	/*! \brief	Default constructor */
	httpclientexceptionA (void) throw () ;
	/*! \brief	Constructor with initial arguments */
	httpclientexceptionA (LPCSTR szErrMsg, DWORD dwLastError = HTTPCLIENT_ERR_NOT_SPECIFIED, DWORD dwWin32LastError = NO_ERROR) throw () ;

	/*! \brief	Returns last error code
	 *
	 * This error code represents the error occurred in classes of this file.
	 */
	inline DWORD LastError (void) const throw ()
	{
		return m_dwLastError ;
	}

	/*! \brief	Sets the last error code
	 *
	 * This error code represents the error occurred in classes of this file.
	 */
	inline void SetLastError (DWORD dwErrCode) throw ()
	{
		m_dwLastError = dwErrCode ;
	}

	/*! \brief	Returns last win32 error code
	 *
	 * Returns the last win32 error code retrieved by using ::GetLastError when an error occurred.
	 */
	inline DWORD Win32LastError (void) const throw ()
	{
		return m_dwWin32LastError ;
	}

	/*! \brief	Sets the last win32 error code
	 *
	 * This method sets the last win32 error code retrieved by using ::GetLastError.
	 */
	inline void SetWin32LastError (DWORD dwErrCode) throw ()
	{
		m_dwWin32LastError = dwErrCode ;
	}

private:
	DWORD			m_dwLastError ;			//!< The last error code.
	DWORD			m_dwWin32LastError ;	//!< The last win32 error code.
} ;

/*!
 * \brief	The standard exception class used by classes in this file. (Unicode Ver.)
 *
 * This class represents an exception occurred in HTTP client classes. All classes in this file
 * will throw this class when an error has been occurred.
 */
class httpclientexceptionW : public errmsg_exceptionW {
public:
	/*! \brief	Default constructor */
	httpclientexceptionW (void) throw () ;
	/*! \brief	Constructor with initial arguments */
	httpclientexceptionW (LPCWSTR szErrMsg, DWORD dwLastError = HTTPCLIENT_ERR_NOT_SPECIFIED, DWORD dwWin32LastError = NO_ERROR) throw () ;

	/*!
	 * \brief	Returns "httpclientexceptionW"
	 *
	 * This is not supported in Unicode version.
	 * It always returns "httpclientexceptionW".
	 *
	 * \return				"httpclientexceptionW"
	 */
	inline LPCSTR what (void) const throw ()
	{
		return "httpclientexceptionW" ;
	}

	/*! \brief	Returns last error code
	 *
	 * This error code represents the error occurred in classes of this file.
	 */
	inline DWORD LastError (void) const throw ()
	{
		return m_dwLastError ;
	}

	/*! \brief	Sets the last error code
	 *
	 * This error code represents the error occurred in classes of this file.
	 */
	inline void SetLastError (DWORD dwErrCode) throw ()
	{
		m_dwLastError = dwErrCode ;
	}

	/*! \brief	Returns last win32 error code
	 *
	 * Returns the last win32 error code retrieved by using ::GetLastError when an error occurred.
	 */
	inline DWORD Win32LastError (void) const throw ()
	{
		return m_dwWin32LastError ;
	}

	/*! \brief	Sets the last win32 error code
	 *
	 * This method sets the last win32 error code retrieved by using ::GetLastError.
	 */
	inline void SetWin32LastError (DWORD dwErrCode) throw ()
	{
		m_dwWin32LastError = dwErrCode ;
	}

private:
	DWORD			m_dwLastError ;			//!< The last error code.
	DWORD			m_dwWin32LastError ;	//!< The last win32 error code.
} ;

#ifdef UNICODE
	typedef httpclientexceptionW		httpclientexception ;
#else
	typedef httpclientexceptionA		httpclientexception ;
#endif

///////////////////////////////////////// httpclientexception /////////////////////////////////////////


///////////////////////////////////////// CHttpToolA /////////////////////////////////////////
/*!
 * \internal
 * \brief	This class contains utility methods. (Ansi Ver.)
 *
 * This class provides some utility methods and gives character type independence.
 * (Internal use only)
 */
class CHttpToolA
{
public:
	// Returns constant messages
	static inline LPCSTR GetConstMessage (DWORD nIdx) throw () ;

	// Methods related to the exception
	typedef	httpclientexceptionA			Exception ;
	static void ThrowException (DWORD nErrMsgIdx) throw (Exception &) ;
	static void ThrowException (LPCSTR szErrMsg, DWORD nErrMsgIdx = HTTPCLIENT_ERR_NOT_SPECIFIED) throw (Exception &) ;
	static void ThrowException (DWORD nErrMsgIdx, DWORD dwErrCode, LPCSTR szStrArg = NULL) throw (Exception &) ;
	static void ThrowException (LPCWSTR szErrMsg, DWORD nErrMsgIdx = HTTPCLIENT_ERR_NOT_SPECIFIED, DWORD dwErrCode = NO_ERROR) throw (Exception &) ;
	static void ThrowException (httpclientexceptionW & e) throw (Exception &) ;
	static void ThrowException (::SafeIntException & e) throw (Exception &) ;

	// String type definitions =======================================================
	typedef CHAR				CharType ;
	typedef LPSTR				PSZ ;
	typedef LPCSTR				PCSZ ;

	static inline BOOL IsAnsi (void) throw ()
	{
		return TRUE ;
	}

	// Wrapper methods for CRT string functions
	static inline size_t StringLen (LPCSTR szStr) throw ()
	{
		return ::strlen (szStr) ;
	}

	static inline LPSTR StringCopy (LPSTR szDest, LPCSTR szSrc) throw ()
	{
		return ::strcpy (szDest, szSrc) ;
	}

	static inline LPSTR StringCat (LPSTR szDest, LPCSTR szSrc) throw ()
	{
		return ::strcat (szDest, szSrc) ;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久色在线视频| 国内成人免费视频| 精品国免费一区二区三区| 成人综合在线观看| 日韩精品色哟哟| 国产精品毛片久久久久久| 欧美一区二区三区公司| 99国产精品久久久久久久久久| 蜜桃视频在线观看一区二区| 亚洲欧美另类小说| 国产亚洲欧美一区在线观看| 欧美精品日日鲁夜夜添| 波多野结衣中文字幕一区| 精品一区二区影视| 婷婷六月综合亚洲| 亚洲激情网站免费观看| 26uuu精品一区二区| 欧美丰满少妇xxxbbb| 色999日韩国产欧美一区二区| 狠狠色丁香婷综合久久| 日韩不卡在线观看日韩不卡视频| 亚洲免费毛片网站| 国产精品污污网站在线观看| www欧美成人18+| 欧美一区二视频| 欧美日韩三级一区二区| 色婷婷综合视频在线观看| 高清在线成人网| 国产伦精品一区二区三区免费迷| 在线观看欧美黄色| 99久久久国产精品免费蜜臀| 国产东北露脸精品视频| 国产麻豆视频精品| 国产精品主播直播| 国产美女av一区二区三区| 久久99热这里只有精品| 麻豆一区二区99久久久久| 日本成人在线不卡视频| 日韩精品一二三四| 老司机午夜精品| 麻豆免费看一区二区三区| 毛片av一区二区三区| 青青草97国产精品免费观看无弹窗版 | 国产目拍亚洲精品99久久精品| 日韩免费看的电影| 2022国产精品视频| 久久久一区二区三区捆绑**| 久久久亚洲高清| 国产欧美一区二区三区在线老狼| 国产午夜精品理论片a级大结局| 337p日本欧洲亚洲大胆精品 | 6080日韩午夜伦伦午夜伦| 欧美日韩久久久久久| 欧美日韩另类国产亚洲欧美一级| 欧美久久久久久久久中文字幕| 欧美男女性生活在线直播观看| 91精品国产综合久久久久久| 制服丝袜亚洲网站| 久久综合久久综合亚洲| 亚洲国产成人自拍| 成人高清视频免费观看| 色婷婷av一区二区三区gif| 欧美曰成人黄网| 欧美一区二区三区的| 久久亚洲二区三区| 综合欧美亚洲日本| 亚洲国产日韩精品| 狂野欧美性猛交blacked| 国产成人精品影视| 在线免费观看视频一区| 日韩亚洲欧美一区二区三区| 久久久噜噜噜久久中文字幕色伊伊| 日本一区二区三区久久久久久久久不| 中文字幕在线视频一区| 亚洲尤物视频在线| 韩国欧美一区二区| 色综合久久综合| 日韩一区二区三区在线观看| 国产欧美日韩在线| 亚洲成人1区2区| 国产精品影视网| 欧美色图12p| 国产日韩欧美电影| 亚洲成人第一页| 国产成人精品免费| 欧美日韩大陆在线| 亚洲国产岛国毛片在线| 日本成人超碰在线观看| 99精品久久只有精品| 日韩精品资源二区在线| 亚洲精品第1页| 精品在线播放午夜| 日本韩国欧美一区| 久久精品一区二区三区不卡牛牛 | 精品中文字幕一区二区| 在线观看国产一区二区| 久久九九久久九九| 日韩制服丝袜先锋影音| 91美女在线观看| 精品剧情在线观看| 亚洲成人午夜影院| hitomi一区二区三区精品| 日韩一级二级三级| 亚洲国产精品综合小说图片区| 丁香五精品蜜臀久久久久99网站| 欧美精品一卡两卡| 亚洲精品国产a久久久久久| 国产aⅴ精品一区二区三区色成熟| 欧美电影一区二区| 亚洲黄一区二区三区| 懂色av一区二区三区免费观看| 日韩色在线观看| 亚洲丶国产丶欧美一区二区三区| 成人一区二区三区中文字幕| 欧美大片日本大片免费观看| 亚洲一区二区三区四区不卡| 99久久国产综合精品麻豆| 久久理论电影网| 久久爱另类一区二区小说| 欧美日韩国产综合久久| 一区二区三区自拍| 99国产精品久久久久久久久久| 久久久777精品电影网影网 | 成人深夜福利app| 久久久久久久久久久久电影 | 丰满白嫩尤物一区二区| 精品国产乱码久久久久久老虎 | 欧美日韩一区二区三区高清| 18成人在线观看| 波多野结衣91| 国产蜜臀97一区二区三区| 国产综合久久久久久鬼色| 日韩欧美久久久| 久久国产免费看| 精品欧美一区二区在线观看| 日本欧美一区二区在线观看| 欧美喷水一区二区| 日本欧美一区二区| 日韩欧美中文字幕制服| 蜜臀精品久久久久久蜜臀| 日韩一区二区不卡| 久久黄色级2电影| 久久久精品蜜桃| 福利电影一区二区三区| 国产精品视频你懂的| av成人免费在线观看| 国产精品不卡一区二区三区| 91影院在线观看| 一区二区三区色| 欧美精品1区2区3区| 裸体健美xxxx欧美裸体表演| 2024国产精品视频| 丁香亚洲综合激情啪啪综合| 亚洲欧美日韩国产综合| 欧美最猛性xxxxx直播| 亚洲高清免费视频| 日韩欧美在线影院| 国产夫妻精品视频| 亚洲美女精品一区| 在线成人小视频| 国产美女视频91| 亚洲欧洲精品一区二区精品久久久| 91麻豆国产香蕉久久精品| 亚洲成人激情自拍| 久久久不卡网国产精品一区| 不卡av在线网| 日日夜夜一区二区| 国产性色一区二区| 在线影院国内精品| 久久精品免费观看| 成人欧美一区二区三区白人| 欧美日韩一区在线观看| 久久精品国产第一区二区三区| 国产精品理论在线观看| 欧美色偷偷大香| 国产九色精品成人porny | 国产成人在线色| 一区二区三区四区亚洲| 日韩你懂的在线观看| 成人app下载| 三级成人在线视频| 国产精品久久福利| 日韩一级成人av| 91麻豆自制传媒国产之光| 狠狠色狠狠色综合| 亚洲一二三区在线观看| 国产亚洲午夜高清国产拍精品 | 欧美日韩的一区二区| 国产成人av福利| 五月综合激情网| 国产精品欧美精品| 亚洲国产毛片aaaaa无费看| 2021中文字幕一区亚洲| 欧美日韩高清影院| 91香蕉视频黄| 国产一区二区三区在线观看精品| 亚洲综合精品自拍| 国产精品成人在线观看| 精品福利一区二区三区免费视频| 91福利小视频|