winhttp简单用法(2)get

#include <string>
#include <iostream>
#include <windows.h>
#include <winhttp.h> 
#pragma comment(lib,"winhttp.lib")
#pragma comment(lib,"user32.lib")


void main()
{

	
    DWORD dwSize = 0;
	DWORD dwDownloaded = 0;
	LPSTR pszOutBuffer = NULL;
	HINTERNET  hSession = NULL,
			   hConnect = NULL,
			   hRequest = NULL;

	BOOL  bResults = FALSE;

	hSession=WinHttpOpen(L"User Agent",WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,WINHTTP_NO_PROXY_NAME,WINHTTP_NO_PROXY_BYPASS,0);

	if(hSession)
	{
		hConnect=WinHttpConnect(hSession,L"192.168.0.8",INTERNET_DEFAULT_HTTP_PORT,0);
	}

	if(hConnect)
	{
		hRequest=WinHttpOpenRequest(hConnect, L"GET",L"login.html",L"HTTP/1.1", WINHTTP_NO_REFERER,WINHTTP_DEFAULT_ACCEPT_TYPES,0);
	}

	if(hRequest)
	{
		bResults=WinHttpSendRequest(hRequest,WINHTTP_NO_ADDITIONAL_HEADERS, 0,WINHTTP_NO_REQUEST_DATA, 0, 0, 0 );
	}

	if(bResults)
	{
		bResults=WinHttpReceiveResponse(hRequest,NULL);

	}
	
	if(bResults)
	{
		do
		{
			// Check for available data.

			 dwSize = 0;

			 if (!WinHttpQueryDataAvailable( hRequest, &dwSize))
			 {
				 printf( "Error %u in WinHttpQueryDataAvailable.\n",GetLastError());

				 break;
			 }

			 if (!dwSize)
				 break;

			  pszOutBuffer = new char[dwSize+1];

			  if (!pszOutBuffer)
			  {
				   printf("Out of memory\n");
				break;
			  }

			   ZeroMemory(pszOutBuffer, dwSize+1);

			   if (!WinHttpReadData( hRequest, (LPVOID)pszOutBuffer,  dwSize, &dwDownloaded))
			   {
				     printf( "Error %u in WinHttpReadData.\n", GetLastError());
			   }
			   else
			   {
				   printf("%s", pszOutBuffer);
			   }

			   delete [] pszOutBuffer;

			   if (!dwDownloaded)
				   break;

		} while (dwSize > 0);
	}
	
	

    if (hRequest) WinHttpCloseHandle(hRequest);
    if (hConnect) WinHttpCloseHandle(hConnect);
    if (hSession) WinHttpCloseHandle(hSession);

	

	 system("pause");


}
原文地址:https://www.cnblogs.com/ytjjyy/p/2480361.html