#include <afxinet.h> // 設置超時 CInternetSession session; session.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 2000); session.SetOption(INTERNET_OPTION_CONNECT_RETRIES, 3); session.SetOption(INTERNET_OPTION_SEND_TIMEOUT, 10000); session.SetOption(INTERNET_OPTION_RECEIVE_TIMEOUT, 20000); // 打開HTTP鏈接 CHttpConnection *pHttpConnection = session.GetHttpConnection(strHost, INTERNET_FLAG_KEEP_CONNECTION, iport); if (NULL == pHttpConnection) { return false; } // 開啓一個HTTP請求 CHttpFile *pHttpFile = pHttpConnection->OpenRequest(_T("POST"), strRequestUrl, NULL, 1, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION); if (NULL == pHttpFile) { return false; } // 設置HTTP請求包頭 pHttpFile->AddRequestHeaders(_T("User-Agent: MYPRODUCT/1.0.0 (Windows)")); pHttpFile->AddRequestHeaders(_T("Content-Type: application/octet-stream")); pHttpFile->AddRequestHeaders(_T("Charset: UTF-8")); // 發送數據 BOOL bResult = pHttpFile->SendRequest(NULL, 0, (LPVOID)output.data(), (DWORD)output.length()); if (!bResult) { return false; } // 查詢狀態 DWORD dwHttpCode = 0; bResult = pHttpFile->QueryInfoStatusCode(dwHttpCode); if (!bResult) { return false; } // 出錯的緣由 if ((dwHttpCode < 200) || (dwHttpCode >= 300)) { BOOL bResult = pHttpFile->QueryInfo(HTTP_QUERY_STATUS_TEXT, szBuffer, &dwBufferSize); } // 接收響應 while ((nReadBytes = pHttpFile->Read((void*)szBuffer, 4096)) > 0) { buffer.write(szBuffer, nReadBytes); memset(szBuffer, 0, 4096 * sizeof(char)); } // 釋放資源 if (NULL != pHttpFile) { pHttpFile->Close(); delete pHttpFile; pHttpFile = NULL; } if (NULL != pHttpConnection) { pHttpConnection->Close(); delete pHttpConnection; pHttpConnection = NULL; } session.Close();
以上爲僞代碼示範過程。 session