jURL Bundle – поддержка curl функций

Пакет расширений для работы с сетью c поддержкой curl_* функций.

Скачать "dn-jurl-bundle.dnbundle" Загрузок: 1924

GitHub

README.md

Пакет расширений для работы с сетью c поддержкой curl_* функций

Возможности

  • Работа с куками
  • Работа с прокси
  • Отправка POST, PUT, DELETE запросов
  • Загрузка файлов
  • Изменение User-Agent, Referer
  • Поддержка Basic авторизации (пример)
  • Отображение ошибок и характеристик соединения

Wiki

Changelog

--- 1.1 ---
[Fix] Иногда не создавался файл с куками
[Add] Поддержка класса cURLFile и функции curl_file_create
[Add] Авторизации при подключении к прокси (параметр CURLOPT_PROXYUSERPWD, функция jURL::setProxyAuth('login::password'))

--- 1.0.3 ---
[Fix] После загрузки файла на сервер не закрывался поток для чтения

--- 1.0.2 ---
[Fix] Ошибка с отправкой raw post
[Fix] Exception при получении кода 404
[Add] В компоненте загрузчик добавлено отображение имени скачиваемого файла

--- 1.0.1 ---
[Fix] Ошибка, возникающая если перед скачиванием файлов был редирект
[Fix] Заголовки не выводятся в файл при setReturnHeaders(true)
[Fix] Ошибка при установке/удалении пакета, если отсутствовал файл .bootstrap

--- 1.0 ---
[Add] Компонент загрузчик
[Add] Многопоточная загрузка
[Add] Добавлена поддержка функций http_build_query, parse_str
[Add] Метод reset для сброса параметров (curl_reset)
[Fix] Исправлена одновременная отправка файлов и переменных методом POST
[Fix] Прочие исправления

--- 0.6 ---
[Add] Загрузка только заголовков без тела запроса (cURL - CURLOPT_NOBODY; jURL - setReturnBody)
[Fix] Скачаный файл заблокирован процессом
[Fix] Ошибки при установке некорректных и неподдерживаемых параметров CURLOPT_*
[Change] В случае ошибки jURL выбрасывает jURLException

--- 0.5 ---
[Change] Модуль переделан в пакет расширений

--- 0.4.0.1 ---
[Fix] Ошибка при подключении модуля к форме

--- 0.4 ---
[Fix] Компилируются в байт-код все компоненты модуля
[Fix] Исправление ошибок

--- 0.3.1 ---
[Add] Добавлены подсказки
[Fix] Исправлен баг, из-за которого прогресс загрузки мог не дойти до 100%

--- 0.3 ---
[Add] Добавлены параметры CURLOPT_POST, CURLOPT_GET, CURLOPT_PUT, CURLOPT_INFILE

Сборка расширения

Windows

gradlew.bat bundle

Linux

gradlew

Группа ВКонтакте

Посты из оф. группы ВКонтакте

5/5 - (2 голоса)

Добавить комментарий

  1. Escaper:

    Здравствуйте. При попытке скачать файл весом 1.3гб в количестве потоков > 1, иногда загрузка не начинается, выбивает исключение, я проследил, откуда это идёт. Я бы скачивал в одном потоке, но сохранить файл из tmp не получается: “OutOfMemory”, подозреваю из-за большого веса. На строку $stream->read($p[‘to’] – $p[‘from’] + 1) в коде загрузчика выбивает.
    Если загружать в многопотоке, то получается, что в момент начала загрузки ошибка в этом участке public function asyncExec($callback = null){
    $this->thread = new Thread(function () use ($callback){
    try{
    $result = $this->Exec();
    } catch (jURLException $e) {
    // здесь
    $result = false;
    Самое интересное, что начать загрузку заново не получается, она зависает, и если в этот момент загрузка продолжится с помощью костылей, то последний файл tmp остаётся весом 0 и загрузка замирает. А вот если изначально загрузка началась успешна, то файл скачается и сохраниться успешно.
    Может, у вас есть решение? Буду благодарен

  2. Не пойму как скачать PHP файл. При попытке скачать файл с сервера, он сохраняется, но содержимое файла выглядит таким образом: “”status”:”could not find driver” и “”status”:”\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445″””
    В .htaccess запретов нет, вообще удалил его для проверки.

  3. Shiroki:

    2.0.0.13-dev

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

    curl_setopt($ch, CURLOPT_PROXY, $proxy_ip );
    curl_setopt($ch, CURLOPT_PROXYUSERPWD, $loginpassw);

    curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);

    При использовании защищенного прокси, к примеру, для подключения к https://, в любом случае выдаст false. Обычный адрес отрабатывает

  4. Frame:

    Здравствуйте! Не работает curl_setopt. Ошибки в логе такие
    [DEBUG] load cached ‘res://bundle/jurl/jURL.php’, 14 ms
    Notice: Use of undefined constant CURLOPT_URL – assumed ‘CURLOPT_URL’ in ‘res://app/forms/MainForm.php’ on line 139 at pos 26
    Notice: Use of undefined constant CURLOPT_HTTPHEADER – assumed ‘CURLOPT_HTTPHEADER’ in ‘res://app/forms/MainForm.php’ on line 140 at pos 26
    Notice: Use of undefined constant CURLOPT_TIMEOUT – assumed ‘CURLOPT_TIMEOUT’ in ‘res://app/forms/MainForm.php’ on line 141 at pos 26
    Notice: Use of undefined constant CURLOPT_CONNECTTIMEOUT – assumed ‘CURLOPT_CONNECTTIMEOUT’ in ‘res://app/forms/MainForm.php’ on line 142 at pos 26
    Notice: Use of undefined constant CURLOPT_FOLLOWLOCATION – assumed ‘CURLOPT_FOLLOWLOCATION’ in ‘res://app/forms/MainForm.php’ on line 143 at pos 26
    Notice: Use of undefined constant CURLOPT_MAXREDIRS – assumed ‘CURLOPT_MAXREDIRS’ in ‘res://app/forms/MainForm.php’ on line 144 at pos 26
    Notice: Use of undefined constant CURLOPT_RETURNTRANSFER – assumed ‘CURLOPT_RETURNTRANSFER’ in ‘res://app/forms/MainForm.php’ on line 145 at pos 26
    Notice: Use of undefined constant CURLOPT_POST – assumed ‘CURLOPT_POST’ in ‘res://app/forms/MainForm.php’ on line 146 at pos 26
    Notice: Use of undefined constant CURLOPT_POSTFIELDS – assumed ‘CURLOPT_POSTFIELDS’ in ‘res://app/forms/MainForm.php’ on line 147 at pos 26

  5. Здравствуйте а как сделать провеку файло на хостинге http://www.host/admin/version
    если там 0 то будет собщения no если 1 то будет yes ? ;

  6. Apachi:

    Здравствуйте, а почему когда отправляешь заголовок через $ch->addHttpHeader(‘Content-Type’, ‘application/json’); вместо application/json идёт application/x-www-form-urlencoded ? Как это можно исправить?

  7. Аноним:

    Здравствуй, я тут решил бота для Telegram сделать. Так вот: там баг с SendPhoto. Уже 3 день не могу никак кастыль придумать. Можешь помочь если не трудно. Нужно локальную пикчу отправить в чат Telegram.

  8. Wings:

    Приветствую!

    Не хватает поддержки:
    $curl->setOpt(CURLOPT_RETURNTRANSFER, TRUE);
    $curl->setOpt(CURLOPT_SSL_VERIFYPEER, FALSE);

    При недействительном сертификате не работает.

    • TsSaltan:

      Добрый день!
      CURLOPT_RETURNTRANSFER – работает, данные возвращаются, возможно какой-то баг, если в ответе пусто, вот последняя версия (ночная сборка)
      CURLOPT_SSL_VERIFYPEER – проверку сертификата, увы, пока не получается отключить, нужно ковырять настройки java

      • Wings:

        Добрый день, Алексей!

        Спасибо за ночную сборку! Чуть позже проверю, скорей всего проблема устранена.
        А вот на счет CURLOPT_SSL_VERIFYPEER, жаль что нет возможности отключать.

        Делаю приложение для управления ISPManager через API, и сертификаты там всегда самоподписанные и разумеется CURL ругается.

        • TsSaltan:

          А вот самоподписанный сертификат может и получится завести, посмотрю, как это организовано в java. Я так понимаю, приватный ключ есть?