Автор Тема: cURL UDF - Выполнения сетевых запросов через библиотеку libcurl + wrapper  (Прочитано 6586 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн BIOS [?]

  • Продвинутый
  • ***
  • Сообщений: 173
  • Репутация: 69
  • Пол: Мужской
  • Жизнь - игра. График - супер, но сюжет - хреновый.
    • Награды
  • Версия AutoIt: 3.3.14.0
AutoIt: 3.3.12.0
Версия: 2.0

Категория: Интернет, Кодирование, Шифрование, Сеть

Описание:  Набор функций для выполнения сетевых запросов с помощью libcurl.dll
Документация по cURL
Состав:
  • libcurl.dll - libcurl.dll v.7.42.1
  • cURL.dll - wrapper для AutoIT
  • msvcr120.dll - зависимость из C++ Redistributable (Если в системе установлен Microsoft Visual C++ Redistributable, то не нужна)
  • msvcr120d.dll - зависимость из C++ Redistributable (Если в системе установлен Microsoft Visual C++ Redistributable, то не нужна)
  • cURL.au3 - UDF
  • cURLConstants.au3 - Константы
  • Example_WriteFuncMode.au3 - Пример работы с Callback функцией приема ответа

Код/Пример: Example.au3
(нажмите для показа/скрытия)
Код/Пример: Example_WriteFuncMode.au3
(нажмите для показа/скрытия)

Файл Include Runtime: cURL_UDF.zip
Файл External Runtime: cURL_UDF.zip

История версий:
(нажмите для показа/скрытия)

P.S. Архивы отличаются количеством и весом dll.

Источник: autoit-script.ru
Автор(ы): BIOS
« Последнее редактирование: Май 20, 2015, 00:13:44 от BIOS »
Не жалуйся на жизнь - и этого могло не быть.

Русское сообщество AutoIt


Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2314
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
BIOS,
При запуске Example_WriteFuncMode.au3 у меня пишет в консоль пустые строки. Пробовал менять адрес - то же самое. :think:

Оффлайн BIOS [?]

  • Продвинутый
  • ***
  • Сообщений: 173

  • Автор темы
  • Репутация: 69
  • Пол: Мужской
  • Жизнь - игра. График - супер, но сюжет - хреновый.
    • Награды
  • Версия AutoIt: 3.3.14.0
madmasles  [?]
Цитировать
пишет в консоль пустые строки
madmasles
Попробуй изменить адрес на http://google.com/ (без ssl)
Сработает?

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2314
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
BIOS  [?]
Цитировать
Попробуй изменить адрес
Изменил, то же самое.

Русское сообщество AutoIt


Оффлайн BIOS [?]

  • Продвинутый
  • ***
  • Сообщений: 173

  • Автор темы
  • Репутация: 69
  • Пол: Мужской
  • Жизнь - игра. График - супер, но сюжет - хреновый.
    • Награды
  • Версия AutoIt: 3.3.14.0
madmasles  [?]
Цитировать
пишет в консоль пустые строки
Обновил архив с UDF, добавил две dll зависимостей из C++ Redistributable


Добавлено: Май 07, 2015, 23:46:07
Обновил библиотеку

1.3
  • Добавил поддержку массивов для функции _cURL_Easy_SetOpt (Пока только для $cURL_OPT_HTTPHEADER)
  • Сделал копирование параметров при установке (часто libcurl "забывал" переданные параметры)
  • Исправил падения при некоторых вызовах с использованием ssl
« Последнее редактирование: Май 07, 2015, 23:46:07 от BIOS, Причина: Объединение сообщений »

Оффлайн BIOS [?]

  • Продвинутый
  • ***
  • Сообщений: 173

  • Автор темы
  • Репутация: 69
  • Пол: Мужской
  • Жизнь - игра. График - супер, но сюжет - хреновый.
    • Награды
  • Версия AutoIt: 3.3.14.0
Обновление библиотеки
Добавлен "Multi" функционал
Добавил функцию _cURL_Easy_Exec - Аналог PHP функции curl_exec
Добавил пример с _cURL_Easy_Exec

Работу над библиотекой можно считать законченной, т.к. реализованы "все" функции

2.0
  • _cURL_Easy_Exec
  • _cURL_Multi_AddHandle
  • _cURL_Multi_Cleanup
  • _cURL_Multi_InfoRead
  • _cURL_Multi_Init
  • _cURL_Multi_Perform
  • _cURL_Multi_RemoveHandle
  • _cURL_Multi_SetOpt
  • _cURL_Multi_SetTimerFuncMode

Оффлайн Naisho [?]

  • Новичок
  • *
  • Сообщений: 85
  • Репутация: 12
    • Награды
попробовал запустить пример к UDF, но получил : "Приложению не удалось запуститься, поскольку Normaliz.dll не был найден. Повторная установка приложения может исправить эту проблему. "
все файлы в одной папке...
кстати (в связи с ошибкой не могу проверить) - как UDF отнесётся к новым версиям библиотеки (7.49.1) и 64х-битности?

Оффлайн BIOS [?]

  • Продвинутый
  • ***
  • Сообщений: 173

  • Автор темы
  • Репутация: 69
  • Пол: Мужской
  • Жизнь - игра. График - супер, но сюжет - хреновый.
    • Награды
  • Версия AutoIt: 3.3.14.0
Naisho
Попробуй установить C++ Redistributable

С новыми версиями, увы, не будет дружить

Как найду свободное время - пересоберу с новой версией и поддержкой SSL и SSH

Русское сообщество AutoIt


Оффлайн Naisho [?]

  • Новичок
  • *
  • Сообщений: 85
  • Репутация: 12
    • Награды
Установить C++ Redistributable - имеется в виду полный комплект VC Redistributable? Какого года? У меня стоит до 2013.
Или достаточно msvcr120.dll и msvcr120d.dll в папке скрипта?
Normaliz.dll у меня действительно нет... (у меня ХР)

Оффлайн BIOS [?]

  • Продвинутый
  • ***
  • Сообщений: 173

  • Автор темы
  • Репутация: 69
  • Пол: Мужской
  • Жизнь - игра. График - супер, но сюжет - хреновый.
    • Награды
  • Версия AutoIt: 3.3.14.0
Naisho
Нашел что ему нужно, эта библиотека для преобразования национальных доменных имен (IDN), идет в поставке с системой версии Vista и выше
Для XP надо установить пакет https://www.microsoft.com/en-us/download/details.aspx?id=734

Оффлайн Naisho [?]

  • Новичок
  • *
  • Сообщений: 85
  • Репутация: 12
    • Награды
установил, теперь выдаёт: "Точка входа в процедуру InitializeCriticalSectionEx не найдена в библиотеке DLL KERNEL32.dll."
я думаю скорее всего сборка сделана без учёта совместимости с ХР...

Оффлайн iltmpz [?]

  • Новичок
  • *
  • Сообщений: 21
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Да, на девелоперской Win7 все работает, а на релизной XP - падает с невнятной ошибкой: скрипт завершился по нажатию ctrl-c, в момент вызова _cURL_Startup()

UP: скачал curl с официального сайта последнюю версию, собрал под vstudio 2015, установив набор инструментов v140_xp, все собралось, но получился curl.exe и libcurl.dll. Как собирать curl.dll я не нашел, но вроде и не нужно:
подключил вместо него libcurl.dll, а там все функции называются по-другому, например не easy_setopt_void, easy_setopt_str, easy_setopt_long, а curl_easy_setopt, но работает как все эти 3.
Example из UDF в итоге у меня заработал, но кроме той строки, где _cURL_Easy_SetOpt передается массив. Эта строка его крашит. Для меня пока не проблема.
А вот под XP этот свежесобранный libcurl точно так же выдает завершение по ctrl-c.
Зато сейчас пока нашел свой древний cubcurl.dll, который собирал под совсем другой проект, с ним под XP все работает. В чем там был нюанс при сборке - уже не помню, но по-моему, в чем-то был...

UP2: с моей подключенной libcurl.dll вместо curl.dll _cURL_Easy_Perform работает, но данные выводит в stdout, а вот _cURL_Easy_Exec - крашится.
Послез в _cURL_Easy_Exec - там какая-то очень мудреная чехарда из callback-функции, структур, которые туда цепляются, и все это завязано совершенно не очевидными для меня способами через dll-функции. Крашится в момент вызова curl_easy_perform. Ковырялся, ковырялся и решил пока признать, что решение под XP нерабочее.
Чего мне не хватает, это перенаправление вывода curl_easy_perform куда-нибудь в другое место, иногда надо в переменную иногда в файл.
Придется вернуться к схеме "$_iPidCurl=Run("curl.exe с параметрами"), StdoutRead($_iPidCurl)".
« Последнее редактирование: Ноябрь 18, 2017, 21:11:32 от iltmpz »

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
7 Ответов
7996 Просмотров
Последний ответ Февраль 25, 2010, 19:33:09
от ynbIpb
3 Ответов
5595 Просмотров
Последний ответ Февраль 07, 2015, 13:38:04
от kristow13
9 Ответов
6885 Просмотров
Последний ответ Июнь 27, 2013, 17:33:23
от gregaz
1 Ответов
1791 Просмотров
Последний ответ Ноябрь 20, 2013, 06:29:03
от XpycT
1 Ответов
2079 Просмотров
Последний ответ Январь 04, 2014, 00:17:17
от madmasles
1 Ответов
2102 Просмотров
Последний ответ Апрель 27, 2014, 00:37:00
от joiner
5 Ответов
9015 Просмотров
Последний ответ Сентябрь 28, 2016, 10:15:53
от Mathewpulk
2 Ответов
1108 Просмотров
Последний ответ Июнь 15, 2015, 20:58:18
от avtoIT
1 Ответов
445 Просмотров
Последний ответ Сентябрь 04, 2016, 18:00:52
от sngr
1 Ответов
302 Просмотров
Последний ответ Ноябрь 25, 2017, 23:23:06
от Alofa