Пытаюсь понять как работает бибилотека wininet. Заметл если задавать адрес без слэша "/" например mail.ru, уandex.ru, news.yandex.ru и т.д., HTML разметка приходит, если же задать адрес со слешем например news.sportbox.ru/Vidy_sporta/plavanie или https://news.mail.ru/society/29683770/?frommail=1 HTML разметки нет, помогите понять причину в результате нужно получить HTML разметку Код | void put_html(string url) { if((int)url.find("http://")!=-1) { cout<<url.find("http://") <<endl; url=url.substr(url.find("http://")+7, url.size()-url.find("http://")-7); } if((int)url.find("https://")!=-1) url=url.substr(url.find("https://")+8, url.size()-url.find("https://")-8);
bool ok = false; // Инициализация WinInet HINTERNET hInternet = ::InternetOpen( TEXT("WinInet Test"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if (hInternet != NULL) { // Открывает HTTP сессию HINTERNET hConnect = ::InternetConnect( hInternet, TEXT(url.c_str()), INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1u); if (hConnect != NULL) { // открываем запрос HINTERNET hRequest = ::HttpOpenRequest( hConnect, TEXT("GET"), TEXT(""), NULL, NULL, 0, INTERNET_FLAG_KEEP_CONNECTION, 1); if (hRequest != NULL) { // посылаем запрос BOOL bSend = ::HttpSendRequest(hRequest, NULL, 0, NULL, 0); if (bSend) { // создаем выходной файл ofstream fnews("new.txt", ios::out | ios::binary); if (fnews.is_open()) for (;;) { // чиаем данные char szData[1024]; DWORD dwByteRead; BOOL bRead = ::InternetReadFile( hRequest, szData, sizeof(szData)-1, &dwByteRead); // выход из цикла при ошибке или завершения if (bRead == FALSE || dwByteRead == 0) break; // сохраняем результат szData[dwByteRead] = 0; fnews << szData; html1+=szData; ok = true; } fnews.close(); } // закрыываем запрос ::InternetCloseHandle(hRequest); } // закрываем сессию ::InternetCloseHandle(hConnect); } // закрываем WinInet ::InternetCloseHandle(hInternet); } //fnews.close();
}
|
|