87 lines
1.9 KiB
C++
87 lines
1.9 KiB
C++
|
|
#include "XHttpUtil.h"
|
|
|
|
|
|
namespace XHttpUtil
|
|
{
|
|
|
|
DWORD ChooseAuthScheme( DWORD dwSupportedSchemes )
|
|
{
|
|
if( dwSupportedSchemes & WINHTTP_AUTH_SCHEME_NEGOTIATE )
|
|
return WINHTTP_AUTH_SCHEME_NEGOTIATE;
|
|
else if( dwSupportedSchemes & WINHTTP_AUTH_SCHEME_NTLM )
|
|
return WINHTTP_AUTH_SCHEME_NTLM;
|
|
else if( dwSupportedSchemes & WINHTTP_AUTH_SCHEME_PASSPORT )
|
|
return WINHTTP_AUTH_SCHEME_PASSPORT;
|
|
else if( dwSupportedSchemes & WINHTTP_AUTH_SCHEME_DIGEST )
|
|
return WINHTTP_AUTH_SCHEME_DIGEST;
|
|
else if( dwSupportedSchemes & WINHTTP_AUTH_SCHEME_BASIC )
|
|
return WINHTTP_AUTH_SCHEME_BASIC;
|
|
|
|
return 0;
|
|
}
|
|
|
|
const wchar_t* GetErrorFunction( DWORD_PTR dwWhere )
|
|
{
|
|
switch( dwWhere )
|
|
{
|
|
case API_RECEIVE_RESPONSE:
|
|
return L"WinHttpReceiveResponse";
|
|
case API_QUERY_DATA_AVAILABLE:
|
|
return L"WinHttpQueryDataAvailable";
|
|
case API_READ_DATA:
|
|
return L"WinHttpReadData";
|
|
case API_WRITE_DATA:
|
|
return L"WinHttpWriteData";
|
|
case API_SEND_REQUEST:
|
|
return L"WinHttpSendRequest";
|
|
case API_HEADER_STATUS_CODE:
|
|
return L"WinHttpQueryHeaders_StatusCode";
|
|
case API_HANDLE_CLOSING:
|
|
return L"Callback_Closing";
|
|
}
|
|
|
|
return L"Unknown_function";
|
|
}
|
|
|
|
|
|
|
|
XHttpSetRequestHeader::XHttpSetRequestHeader( HINTERNET hRequest )
|
|
: m_hRequest( hRequest )
|
|
{
|
|
}
|
|
|
|
XHttpSetRequestHeader::~XHttpSetRequestHeader()
|
|
{
|
|
m_hRequest = NULL;
|
|
}
|
|
|
|
bool XHttpSetRequestHeader::Add( const std::wstring& strName, const std::wstring& strValue )
|
|
{
|
|
std::wstring strHeader = strName + L": " + strValue + L"\r\n";
|
|
return Add( strHeader );
|
|
}
|
|
|
|
bool XHttpSetRequestHeader::Add( const std::wstring& strHeader )
|
|
{
|
|
if( strHeader.empty() == false )
|
|
{
|
|
if( ::WinHttpAddRequestHeaders(
|
|
m_hRequest,
|
|
strHeader.c_str(),
|
|
static_cast< DWORD >( strHeader.size() ),
|
|
WINHTTP_ADDREQ_FLAG_ADD | WINHTTP_ADDREQ_FLAG_REPLACE )
|
|
== FALSE )
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|