• 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");
  • 相关阅读:
    Java 进制转换
    k-近邻算法实例
    Java JTS & 空间数据模型
    Java中 &&与&,||与|的区别
    http https 区别
    四种DCOM错误的区别,0x80080005 0x800706be 0x80010105 0x
    OPC测试常用的OPCClient和OPCServer软件推荐
    关于TFS2010 远程无法创建团队项目的若干问题总结
    我对NHibernate的感受(4):令人欣喜的Interceptor机制
    我对NHibernate的感受(3):有些尴尬的集合支持
  • 原文地址:https://www.cnblogs.com/ytjjyy/p/2486972.html
Copyright © 2020-2023  润新知