#include "http://www.cnblogs.com/src/network/http.h" void WinHttpWorker::HttpCreateSession(LPCWSTR agent) { _hSession=WinHttpOpen(agent,WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,WINHTTP_NO_PROXY_NAME,WINHTTP_NO_PROXY_BYPASS,0); if(_hSession) { printf("%s", "_hSession\n"); } } void WinHttpWorker::HttpCreateConnect(LPCWSTR ipaddr, int serverPort) { _hConnect=WinHttpConnect(_hSession,ipaddr,serverPort,0); if(_hConnect) { printf("%s", "_hConnect\n"); } } void WinHttpWorker::HttpCreateRequest(LPCWSTR verb,LPCWSTR object) { _hRequest=WinHttpOpenRequest(_hConnect,verb,object,L"HTTP/1.1", WINHTTP_NO_REFERER,WINHTTP_DEFAULT_ACCEPT_TYPES,0); if(_hRequest) { printf("%s", "_hRequest\n"); } } void WinHttpWorker::HttpAddRequestHeaders(LPCWSTR header) { SIZE_T length = lstrlenW(header); WinHttpAddRequestHeaders(_hRequest,header,DWORD(length), WINHTTP_ADDREQ_FLAG_ADD); if(WinHttpAddRequestHeaders) { printf("%s", "WinHttpAddRequestHeaders\n"); } } void WinHttpWorker::HttpSendRequest(const void *data, int length) { _bResult=WinHttpSendRequest(_hRequest, 0, 0,const_cast<void *>(data),length, length, 0 ); if(_bResult) { printf("%s", "WinHttpSendRequest\n"); } } void WinHttpWorker::HttpReceiveResponse() { _bResult=WinHttpReceiveResponse(_hRequest,NULL); if(_bResult) { printf("%s", "WinHttpReceiveResponse\n"); } } void WinHttpWorker:: HttpReadData(void *buffer, DWORD length, DWORD *read) { WinHttpReadData(_hRequest, buffer, length, read); } void WinHttpWorker::HttpQueryData(DWORD *size) { _bResult=WinHttpQueryDataAvailable(_hRequest, size); if(_bResult) { printf("%s", "WinHttpQueryDataAvailable\n"); } else { printf("error\n"); } } WinHttpWorker::~WinHttpWorker() { if (_hRequest) WinHttpCloseHandle(_hRequest); if (_hConnect) WinHttpCloseHandle(_hConnect); if (_hSession) WinHttpCloseHandle(_hSession); }
WinHttpWorker * http=new WinHttpWorker(); http->HttpCreateSession(L"User-Agent"); http->HttpCreateConnect(L"192.168.0.8",80); http->HttpCreateRequest(L"POST",L"login.html"); http->HttpAddRequestHeaders(L"Content-type:application/x-www-form-urlencoded/r/n"); std::string data="name=xx11sad&sign=xx11sad"; http->HttpSendRequest((const char *)data.c_str(),data.length()); http->HttpReceiveResponse(); LPSTR buffer; DWORD dwSize = 0; http->HttpQueryData(&dwSize); printf("%i",dwSize); buffer = new char[dwSize+1]; ZeroMemory(buffer,dwSize+1); http->HttpReadData(buffer,dwSize,&dwSize); printf("%s", buffer); delete [] buffer; system("pause");