HttpWorker

#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");

你可能感兴趣的:(worker)