Initial
This commit is contained in:
63
wininet/HTTPConnection.cpp
Normal file
63
wininet/HTTPConnection.cpp
Normal file
@@ -0,0 +1,63 @@
|
||||
#include <wininet/HTTPConnection.hpp>
|
||||
|
||||
bool HTTPConnection::get(const String &action,HTTPHeader &httpHeader,HTTPData &httpData)
|
||||
{
|
||||
DWORD dwSize(0);
|
||||
String strHeaders;
|
||||
|
||||
LPSTR accessTypes[2]={"*/*",0};
|
||||
if(!isOkay())return false;
|
||||
mhRequest=::HttpOpenRequest(getHANDLE(),"GET",action.str(),HTTP_VERSION,0,(const char**)&accessTypes,INTERNET_FLAG_RELOAD|INTERNET_FLAG_NO_CACHE_WRITE,0);
|
||||
if(!mhRequest)return false;
|
||||
if(!::HttpSendRequest(mhRequest,0,0,0,0))return false;
|
||||
::HttpQueryInfo(mhRequest,HTTP_QUERY_RAW_HEADERS_CRLF,0,&dwSize,0);
|
||||
if(!dwSize)return false;
|
||||
strHeaders.reserve(dwSize+1);
|
||||
::HttpQueryInfo(mhRequest,HTTP_QUERY_RAW_HEADERS_CRLF,strHeaders,&dwSize,0);
|
||||
httpHeader=strHeaders;
|
||||
if(httpHeader.isErrorResponse())return false;
|
||||
httpData.size(httpHeader.getContentLength());
|
||||
if(!httpData.size())httpData.size(32768);
|
||||
dwSize=0;
|
||||
::InternetReadFile(mhRequest,&httpData[0],httpData.size(),&dwSize);
|
||||
if(dwSize<httpData.size())
|
||||
{
|
||||
HTTPData tmpData;
|
||||
tmpData.size(dwSize);
|
||||
for(int index=0;index<dwSize;index++)tmpData[index]=httpData[index];
|
||||
httpData=tmpData;
|
||||
}
|
||||
closeRequest();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool HTTPConnection::post(const String &action,HTTPHeader &httpHeader,HTTPData &httpData)
|
||||
{
|
||||
DWORD dwSize(0);
|
||||
String strHeader;
|
||||
String strHeaders;
|
||||
|
||||
LPSTR accept[2]={"Accept: */*",0};
|
||||
if(!isOkay())return false;
|
||||
mhRequest=::HttpOpenRequest(getHANDLE(),"GET",action.str(),HTTP_VERSION,0,(const char**)&accept,0,1);
|
||||
if(!mhRequest)return false;
|
||||
strHeader=httpHeader.serialize();
|
||||
if(!::HttpSendRequest(mhRequest,strHeader.str(),strHeader.length(),&httpData[0],httpData.size()))return false;
|
||||
::HttpQueryInfo(mhRequest,HTTP_QUERY_RAW_HEADERS_CRLF,0,&dwSize,0);
|
||||
if(!dwSize)return false;
|
||||
strHeaders.reserve(dwSize+1);
|
||||
::HttpQueryInfo(mhRequest,HTTP_QUERY_RAW_HEADERS_CRLF,strHeaders,&dwSize,0);
|
||||
httpHeader=strHeaders;
|
||||
httpData.size(httpHeader.getContentLength());
|
||||
if(!httpData.size())httpData.size(32768);
|
||||
::InternetReadFile(mhRequest,&httpData[0],httpData.size(),&dwSize);
|
||||
if(dwSize<httpData.size())
|
||||
{
|
||||
HTTPData tmpData;
|
||||
tmpData.size(dwSize);
|
||||
for(int index=0;index<dwSize;index++)tmpData[index]=httpData[index];
|
||||
httpData=tmpData;
|
||||
}
|
||||
closeRequest();
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user