Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WININET в VS2017 
:(
    Опции темы
polin11
Дата 29.7.2017, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 6.6.2015

Репутация: нет
Всего: нет



WININET в VS2017
Чем больше приходится использовать VS C++, тем больше мне нравится Python.
Задача тривиальная по URL получить html разметку и записать в файл, взял пример http://rsdn.org/?article/inet/wininet.xml
В VS 2010 в свойствах проекта ставишь НАБОР СИМВОЛОВ - ИСПОЛЬЗОВАТЬ МНОГОБАЙТОВУЮ КОДИРОВКУ -все работает.
В VS 2017 при аналогичных действиях ошибка при компиляции //ОШИБКА идентификатор Lurl не определен
Что еще нужно сделать??????
Если знаете другой способ получить html разметку напишите!!!
Код

#include "stdafx.h"
#include <windows.h>
#include <wininet.h>
#pragma comment(lib,"wininet")
#include <stdlib.h>
#include<fstream>
#include<iostream>
#include <string>
using namespace std;
void getHTML(string url)
{
    bool ok = false;
    // инициализируем WinInet
    HINTERNET hInternet =
        ::InternetOpen(
            TEXT("WinInet Test"),
            INTERNET_OPEN_TYPE_PRECONFIG,
            NULL, NULL,
            0);

    if (hInternet != NULL) {
        HINTERNET hConnect =
            ::InternetConnect(
                hInternet,
                TEXT(url),    //ОШИБКА идентификатор Lurl не определен
                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("news.html", ios::out | ios::binary);
                    if (fnews.is_open()) for (;;) {
                        char  szData[1024];
                        DWORD dwBytesRead;
                        BOOL bRead =
                            ::InternetReadFile(
                                hRequest,
                                szData, sizeof(szData) - 1,
                                &dwBytesRead);

                        if (bRead == FALSE || dwBytesRead == 0)
                            break;

                        szData[dwBytesRead] = 0;
                        fnews << szData;
                        cout << szData;
                        cout << "asd" << endl;
                        ok = true;
                    }
                }
                ::InternetCloseHandle(hRequest);
            }
            ::InternetCloseHandle(hConnect);
        }
        ::InternetCloseHandle(hInternet);
    }
    if (ok)
        system("start news.html");
}
int main(int argc, char* argv[])
{

    getHTML("yandex.ru");
    getchar();
    return 0;
}


PM MAIL   Вверх
polin11
Дата 29.7.2017, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 6.6.2015

Репутация: нет
Всего: нет



Исправл код, как Вы советовали, код скомпилировался, 
запускаю в качестве URL пробовал yandex.ru (протокол https), mail.ru (протокол https), 
rsdn.org (протокол http) и другие, переменная bSend  имеет значение false.
В файл html разметка не записывается. Почему, что делаю неверно???

Код

#include "stdafx.h"
#include <windows.h>
#include <wininet.h>
#pragma comment(lib,"wininet")
#include <stdlib.h>
#include<fstream>
#include<iostream>
#include <string>
using namespace std;


void getHTML(LPCTSTR url)
{
    bool ok = false;
    HINTERNET hInternet =
        ::InternetOpen(
            TEXT("WinInet Test"),
            INTERNET_OPEN_TYPE_PRECONFIG,
            NULL, NULL,
            0);

    if (hInternet != NULL) {
        // открываем HTTP сессию
        HINTERNET hConnect =
            ::InternetConnect(
                hInternet,
                url,
                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); //bSend : false
                if (bSend) {
                    ofstream fnews("news.html", ios::out | ios::binary);
                    if (fnews.is_open()) for (;;) {
                        char  szData[1024];
                        DWORD dwBytesRead;
                        BOOL bRead =
                            ::InternetReadFile(
                                hRequest,
                                szData, sizeof(szData) - 1,
                                &dwBytesRead);

                        if (bRead == FALSE || dwBytesRead == 0)
                            break;
                        szData[dwBytesRead] = 0;
                        fnews << szData;
                        cout << szData;
                        cout << "asd" << endl;
                        ok = true;
                    }
                }
                ::InternetCloseHandle(hRequest);
            }
            ::InternetCloseHandle(hConnect);
        }
        ::InternetCloseHandle(hInternet);
    }
    if (ok)
        system("start news.html");
}
int main(int argc, char* argv[])
{
    getHTML(TEXT("tensor.ru")); 
    getHTML(TEXT("mail.ru"));
    getHTML(TEXT("rsdn.org"));
    getchar();
    return 0;
}


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.1202 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.