C ++ Получить исходный код HTML
Я хотел бы знать, как я могу скачать сайт »HTML-источник в строку без использования LibCurl. Я искал в Интернете примеры использования Wininet.
Ниже приведен пример кода, который я использовал для Wininet. Как бы я сделал то же самое с помощью Winsock?
#include "stdafx.h"
#include
#include
#include
#include
#include
#include
using namespace std;
#pragma comment ( lib, "Wininet.lib" )
int main()
{
HINTERNET hInternet = InternetOpenA("InetURL/1.0", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
HINTERNET hConnection = InternetConnectA(hInternet, "google.com", 80, " ", " ", INTERNET_SERVICE_HTTP, 0, 0);
HINTERNET hData = HttpOpenRequestA(hConnection, "GET", "/", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
char buf[2048];
string lol;
HttpSendRequestA(hData, NULL, 0, NULL, 0);
DWORD bytesRead = 0;
DWORD totalBytesRead = 0;
// http://msdn.microsoft.com/en-us/library/aa385103(VS.85).aspx
// To ensure all data is retrieved, an application must continue to call the
// InternetReadFile function until the function returns TRUE and the
// lpdwNumberOfBytesRead parameter equals zero.
while (InternetReadFile(hData, buf, 2000, &bytesRead) && bytesRead != 0)
{
buf[bytesRead] = 0; // insert the null terminator.
puts(buf); // print it to the screen.
lol = lol + buf;
printf("%d bytes read\n", bytesRead);
totalBytesRead += bytesRead;
}
printf("\n\n END -- %d bytes read\n", bytesRead);
printf("\n\n END -- %d TOTAL bytes read\n", totalBytesRead);
InternetCloseHandle(hData);
InternetCloseHandle(hConnection);
InternetCloseHandle(hInternet);
cout < "\nThe beginning." < endl < endl < endl;
cout < lol < endl;
system("PAUSE");
}