За последние 24 часа нас посетили 17710 программистов и 1611 роботов. Сейчас ищут 2224 программиста ...

получить файл через curl

Тема в разделе "PHP для новичков", создана пользователем keks_feo, 12 май 2016.

  1. keks_feo

    keks_feo Активный пользователь

    С нами с:
    6 ноя 2008
    Сообщения:
    11
    Симпатии:
    0
    добрый день!
    ребята подскажите в чем ошибка. есть код который должен по ссылке вытащить pdf. но на выходе не чего не происходит
    т.е. если просто в браузере запустить ссылку http://192.168.12.10/ReportServer_S...DF&N_Year=2016&N_Month=3&F_Division=2&id=1000 то. вываливается авторизация где я ввожу пользователя - "domen\user" и пароль - "pass"

    но если тоже самое делаю через CURL то результата нет ..... подскажите. что не так?!

    Код (Text):
    1.   $ch = curl_init();
    2.         curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    3.         curl_setopt($ch, CURLOPT_USERPWD, "domen\user" . ":" . "pass");
    4.         curl_setopt($ch, CURLOPT_HEADER, 1);
    5.         curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    6.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    7.         curl_setopt($ch, CURLOPT_URL, "http://192.168.12.10/ReportServer_SERVERAPP?/otchet&rs:Format=PDF&N_Year=2016&N_Month=3&F_Division=2&id=1000");
    8.         curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    9.         $result = curl_exec($ch);
    10.         curl_close($ch);
    11.         if ($result)
    12.         {
    13.                 header('Content-type: application/pdf');
    14.                 header('Content-Disposition: attachment; filename=1.pdf');
    15.                 header('Content-Length: ' . strlen($result));
    16.                 echo $result;
    17.                 exit();
    18.         }
    19. else {echo  "Результата нет";}
     
  2. yuri

    yuri Активный пользователь

    С нами с:
    16 янв 2012
    Сообщения:
    288
    Симпатии:
    2
    сделай var_dump($result)
    позырь нет ли ошибок curl_error
     
  3. keks_feo

    keks_feo Активный пользователь

    С нами с:
    6 ноя 2008
    Сообщения:
    11
    Симпатии:
    0
    var_dump показал просто string(0) "" к чему это хз )
    а curl_error вообще не чего не выдал
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    строка нулевой длины это пустая строка
     
  5. yuri

    yuri Активный пользователь

    С нами с:
    16 янв 2012
    Сообщения:
    288
    Симпатии:
    2
    string(0) "" - это ответ твоего сервера

    Отключи на сервере авторизацию чтобы исключить этот вариант.
    Потом сделай на сервере var_dump($_POST); var_dump($_GET); и смотри в результатах курла что вернётся.
    Думаю что-то не то с параметрами и(или) авторизацией.
     
  6. keks_feo

    keks_feo Активный пользователь

    С нами с:
    6 ноя 2008
    Сообщения:
    11
    Симпатии:
    0
    ок. спсб ребята буду пробовать ..... меня тоже смущал тот вариант что авторизируюсь через домен\юзер
    Код (Text):
    1.  curl_setopt($ch, CURLOPT_USERPWD, "domen\user" . ":" . "pass");
     
  7. keks_feo

    keks_feo Активный пользователь

    С нами с:
    6 ноя 2008
    Сообщения:
    11
    Симпатии:
    0
    вот нашел еще какой нюанс
    если просто качать с сервера уже готовый pdf
    Код (Text):
    1. <?php
    2. $ch = curl_init();
    3.         curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    4.         curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true);
    5.         curl_setopt($ch, CURLOPT_HEADER, 1);
    6.         curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    7.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    8.         curl_setopt($ch, CURLOPT_URL, "http://192.192.192.52/pdf/IP_2016_pril_14.pdf");
    9.         curl_setopt($ch, CURLOPT_USERPWD, "login" . ":" . "pass");
    10.         curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 50);
    11.         curl_setopt($ch, CURLOPT_TIMEOUT, 50);
    12.      $result= curl_exec($ch);
    13.      curl_close($ch);
    14.        if ($result)
    15.         {
    16.                 header('Content-type: application/pdf');
    17.                 header('Content-Disposition: attachment; filename=1.pdf');
    18.                 header('Content-Length: ' . strlen($result));
    19.                 echo $result;
    20.                 exit();
    21.         }
    22.  
    23. //echo $result;
    24. //var_dump($result);
    то файл качается и открывается без проблем.

    а если использоваться ссылку с параметрами
    Код (Text):
    1. http://192.192.192.52/ReportServer_SERVERAPP?/otchet&rs:Format=PDF&N_Year=2016&N_Month=3&F_Division=2&id=1000
    то не фига не качается и ошибок нету. причем если смотреть var_dump то получаю bool(false)
    хотя если взять эту ссылку
    Код (Text):
    1. http://192.192.192.52/ReportServer_SERVERAPP?/otchet&rs:Format=PDF&N_Year=2016&N_Month=3&F_Division=2&id=1000
    и просто в браузер втыкнуть на выходе получаю pdf
    хочу заметить что эту ссылку делает sql reports server
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв