Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 23.07.2015, 19:10   #1
Ship_1
Участник клуба
 
Регистрация: 10.02.2014
Сообщений: 523
Репутация: 60
По умолчанию Получить сайт https через WinInet

Здравствуйте.
Есть такой код:
Код:

function GetSiteCode(URL_Base,URL_Page:String):String;
var
//========== для получения кода страницы ==========
  hInet, hCon, hReq: HINTERNET;
  Status, StatusSize, Index: DWORD;
  bytes, b, posi: Cardinal;
  ResponseString: AnsiString;
//=================================================
begin

  begin
//========== получение кода страницы ==========
    hInet := InternetOpen('My Agent', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
    if not Assigned(hInet) then
      raise Exception.Create('Ошибка при выполнении функции InternetOpen' + sLineBreak + SysErrorMessage(GetLastError));
    try
      hCon := InternetConnect(hInet, PChar(URL_Base), INTERNET_DEFAULT_HTTP_PORT, nil, nil, INTERNET_SERVICE_HTTP, 0, 0);
      if not Assigned(hCon) then
        raise Exception.Create('Ошибка при выполнении функции InternetConnect' + sLineBreak + SysErrorMessage(GetLastError));
      try
        hReq := HttpOpenRequest(hCon, 'GET', PChar(URL_Page), HTTP_VERSION, nil, nil, 
                            INTERNET_FLAG_KEEP_CONNECTION or INTERNET_FLAG_RELOAD, 0);
        if not Assigned(hReq) then
          raise Exception.Create('Ошибка при выполнении функции HttpOpenRequest' + sLineBreak + SysErrorMessage(GetLastError));
        try
          HttpSendRequest(hReq,'', 0, nil, 0);
          StatusSize := SizeOf(Status);
          Index := 0;
          HttpQueryInfo(hReq, HTTP_QUERY_FLAG_NUMBER or HTTP_QUERY_STATUS_CODE, @Status, StatusSize, Index);
          if Status <> HTTP_STATUS_OK then
            raise Exception.Create('Ошибка при выполнении функции HttpSendRequest' + sLineBreak 
                      + 'Статус: ' + IntToStr(Status) + sLineBreak + SysErrorMessage(GetLastError));
          posi := 1;
          b := 1;
          ResponseString := '';
          while b > 0 do begin
            if not InternetQueryDataAvailable( hReq, bytes, 0, 0 ) then
              raise Exception.Create('Ошибка при выполнении функции InternetQueryDataAvailable' + sLineBreak 
                      + SysErrorMessage(GetLastError));
            SetLength( ResponseString, Length(ResponseString) + bytes );
            InternetReadFile( hReq, @ResponseString[Posi], bytes, b );
            Inc(Posi, b);
          end;
        finally
          InternetCloseHandle(hReq);
        end;
      finally
        InternetCloseHandle(hCon);
      end;
    finally
      InternetCloseHandle(hInet);
    end;
//========== конец получения кода страницы ==========

    Result:=ResponseString;

//    ShowMessage('Результат: '+Result);
  end;

end;

Что в ней поменять чтобы получать страницы https, а не http, если в URL_Base этого вообще не указывается?

Последний раз редактировалось Stilet; 23.07.2015 в 21:07.
Ship_1 вне форума   Ответить с цитированием
Старый 23.07.2015, 19:32   #2
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 20,997
Репутация: 3402

icq: 446843180
skype: phoenix_proger
По умолчанию

https://support.microsoft.com/ru-ru/kb/168151
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Старый 23.07.2015, 19:32   #3
xxbesoxx
Профессионал
 
Аватар для xxbesoxx
 
Регистрация: 10.08.2010
Адрес: Грузия Рустави
Сообщений: 1,290
Репутация: 672
Отправить сообщение для xxbesoxx с помощью Yahoo
По умолчанию

Цитата:
чтобы получать страницы https
Я прошу прощения, Вы хотите "код страницы" получить и "сам страница" как из обычный браузер ?
__________________
E_MAIL: rijgvina7@yahoo.com

Последний раз редактировалось xxbesoxx; 23.07.2015 в 19:38.
xxbesoxx вне форума   Ответить с цитированием
Старый 23.07.2015, 20:22   #4
Ship_1
Участник клуба
 
Регистрация: 10.02.2014
Сообщений: 523
Репутация: 60
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Я прошу прощения, Вы хотите "код страницы" получить и "сам страница" как из обычный браузер ?
Код страницы
Пепел Феникса
Здорово!! Спасибо за такую чёткую, конкретную и прямую ссылку! Получилось!

Последний раз редактировалось Ship_1; 23.07.2015 в 21:00.
Ship_1 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WinInet, HTTPS, POST, VK.COM FULEREN Win Api 1 01.12.2014 21:41
получить координаты телефона через установленное приложение на сайт ilshat09 Java Мобильная разработка (Android) 12 15.10.2013 07:44
WinInet докачка файла через TFileStream Человек_Борща Работа с сетью в Delphi 11 16.08.2010 17:31
Хук HttpSendRequestA через Wininet.dll VitaliyK Общие вопросы .NET 0 08.12.2008 15:28
Подключение через WinInet SHEI'TI Работа с сетью в Delphi 1 15.02.2007 20:53


20:23.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru