Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа в WININET / 4 сообщений из 4, страница 1 из 1
09.05.2017, 22:20
    #39450473
polin11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа в WININET
Пытаюсь понять как работает бибилотека 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 разметку

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
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();

}
...
Рейтинг: 0 / 0
09.05.2017, 22:34
    #39450475
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа в WININET
polin11,
url на части разбить нужно

host - параметром в InternetConnect передавать
path с параметрами - в HttpOpenRequest (3-й параметр)
...
Рейтинг: 0 / 0
09.05.2017, 23:12
    #39450487
polin11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа в WININET
Поясните пожалуйста на примере news.sportbox.ru/Vidy_sporta/plavanie, что куда передавать. Спасибо за оперативный ответ
...
Рейтинг: 0 / 0
09.05.2017, 23:24
    #39450490
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа в WININET
polin11Поясните пожалуйста на примере news.sportbox.ru/Vidy_sporta/plavanie, что куда передавать. Спасибо за оперативный ответ
Код: plaintext
1.
2.
InternetConnect( ,"news.sportbox.ru", ...)
HttpOpenRequest(,,"/Vidy_sporta/plavanie", ...)



полно же готовых ответов в сети - http://www.cyberforum.ru/win-api/thread903513.html например
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа в WININET / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]