Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2015, 18:10   #1
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию Получить сайт 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 в 20:07.
Ship_1 вне форума Ответить с цитированием
Старый 23.07.2015, 18:32   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

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

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

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WinInet, HTTPS, POST, VK.COM FULEREN Win Api 1 01.12.2014 20: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 14:28
Подключение через WinInet SHEI'TI Работа с сетью в Delphi 1 15.02.2007 19:53