На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
    > WinInet: узнать имя файла, возвращаемого по ссылке , напр. http://www.jrsoftware.org/download.php/is-unicode.exe?site=1 -> innosetup-5.5.9-unicode.exe
      Использую функции WinInet для скачивания файлов по HTTP. Хочется уметь узнавать имя файла, возвращаемого по ссылке. Например, браузер при скачивании http://www.jrsoftware.org/download.php/is-unicode.exe?site=1 как-то определяет, что файл называется innosetup-5.5.9-unicode.exe. Пробовал HttpQueryInfo с разными параметрами - ничего нет, вытащил весь заголовок параметром HTTP_QUERY_RAW_HEADERS_CRLF - вернуло следующее:
      ExpandedWrap disabled
        HTTP/1.1 200 OK
        Date: Sun, 17 Apr 2016 08:56:07 GMT
        Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8e-fips-rhel5 PHP/5.2.14
        Last-Modified: Wed, 06 Apr 2016 14:39:40 GMT
        ETag: "135807a-245450-52fd1ee864300"
        Accept-Ranges: bytes
        Content-Length: 2380880
        Keep-Alive: timeout=5, max=100
        Connection: Keep-Alive
        Content-Type: application/octet-stream

      ...и ничего похожего на имя файла тут нет :(
      Как говорится, ЧЯДНТ?
        mitrich
        Так по той ссылке сервер возвращает вот это:
        Цитата
        HTTP/1.1 302 Found
        Date: Mon, 18 Apr 2016 06:57:03 GMT
        Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8e-fips-rhel5 PHP/5.2.14
        X-Powered-By: PHP/5.2.14
        Location: http://files.jrsoftware.org/is/5/innosetup-5.5.9-unicode.exe
        Content-Length: 0
        Content-Type: text/html
        Proxy-Connection: Keep-Alive
        Connection: Keep-Alive
        Age: 0

        И уже при запросе files.jrsoftware.org/is/5/innosetup-5.5.9-unicode.exe тебе возвращается ответ, который в твоем посте.
          Ясно. WinInet слишком много на себя берет. То есть мне видимо надо:
          1. Вызывать HttpOpenRequest с флагом INTERNET_FLAG_NO_AUTO_REDIRECT
          2. Обрабатывать возвращаемые коды 301, 302, 303
          3. Переходить по адресу в поле Location
          4. И вообще, переписать всё на WinHTTP :)
          Сейчас попробую...
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0242 ]   [ 17 queries used ]   [ Generated: 28.03.24, 11:12 GMT ]