• 用WinHttp简单的Post数据


     1 BOOL KFunction::HttpPostData( LPCTSTR strUrl,LPCTSTR strData )
     2 {
     3     OutputDebugString(_T("URL:"));
     4     OutputDebugString(strUrl);
     5     OutputDebugString(_T("DATA:"));
     6     OutputDebugString(strData);
     7     bool bRtn = true;
     8     HINTERNET hSession = NULL;
     9     HINTERNET hConn = NULL;
    10     HINTERNET hRequest = NULL;
    11     do{
    12         hSession = ::WinHttpOpen(_T("uninstall.exe"),WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,WINHTTP_NO_PROXY_NAME,WINHTTP_NO_PROXY_BYPASS,0);
    13         if(NULL == hSession){
    14             bRtn = false;
    15             break;
    16         }    
    17 
    18         URL_COMPONENTS urlComp = {sizeof(URL_COMPONENTS)};
    19         TCHAR szHostName[MAX_PATH] = L"";
    20         TCHAR szURLPath[MAX_PATH * 5] = L"";
    21         urlComp.lpszHostName = szHostName;
    22         urlComp.dwHostNameLength = MAX_PATH;
    23         urlComp.lpszUrlPath = szURLPath;
    24         urlComp.dwUrlPathLength = MAX_PATH * 5;
    25         urlComp.dwSchemeLength = 1; // None zero
    26         if(FALSE == ::WinHttpCrackUrl(strUrl,_tcslen(strUrl),0,&urlComp)){
    27             bRtn = false;
    28             break;
    29         }
    30         hConn = ::WinHttpConnect(hSession,urlComp.lpszHostName,80,NULL);
    31         if(NULL == hConn){
    32             bRtn = false;
    33             break;
    34         }
    35         hRequest = ::WinHttpOpenRequest(hConn,_T("POST"),urlComp.lpszUrlPath,NULL,WINHTTP_NO_REFERER,WINHTTP_DEFAULT_ACCEPT_TYPES,0);
    36 
    37         CString headers;
    38         headers.Format(_T("Content-Length:%d
    Content-Type: application/x-www-form-urlencoded
    "),_tcslen(strData));
    39 
    40         if(FALSE == ::WinHttpSendRequest(hRequest,headers,headers.GetLength(),WINHTTP_NO_REQUEST_DATA,0,0,NULL)){
    41             bRtn = false;
    42             break;
    43         }
    44         DWORD writeNum = 0;
    45 #ifdef _UNICODE
    46         char* szPostData = new char[_tcslen(strData)*2+1];
    47         wcstombs(szPostData,strData,MAX_PATH);
    48         if(FALSE == ::WinHttpWriteData(hRequest,(LPVOID)szPostData,strlen(szPostData),&writeNum)){
    49 #else
    50         if(FALSE == ::WinHttpWriteData(hRequest,(LPVOID)strData,strlen(strData),&writeNum)){
    51 #endif
    52             bRtn = false;
    53             break;
    54         }
    55         OutputDebugString(_T("POST请求发送成功"));
    56     }while(0);
    57 
    58     if(NULL != hRequest){
    59         WinHttpCloseHandle(hSession);
    60     }
    61     if(NULL != hConn){
    62         WinHttpCloseHandle(hSession);
    63     }
    64     if(NULL != hSession){
    65         WinHttpCloseHandle(hSession);
    66     }
    67     return bRtn;
    68 }

    具体参考MSDN:http://msdn.microsoft.com/en-us/library/windows/desktop/aa384098(v=vs.85).aspx

  • 相关阅读:
    sql压缩备份
    解决nodejs中的mysql错误 Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'localhost'
    NodeJs创建新的项目和模块
    nodejsq发送formData的数据
    分析SQL语句的性能
    nest classvalidator验证修饰器中文文档
    STM8L不能通过代码设置ROP开启读保护
    uCOS邮箱的使用
    mysql忘记root密码了,怎么办
    01.mybatis
  • 原文地址:https://www.cnblogs.com/aishangxue/p/3384908.html
Copyright © 2020-2023  润新知