libcurl for Clarion

Программы на Clarion, шаблоны, библиотеки и пр.
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2598
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

libcurl for Clarion

Сообщение Дед Пахом »

Не за что, на моём месте так поступил бы каждый!
С уважением, ДП
Аватара пользователя
morkovin
Ветеран
Сообщения: 873
Зарегистрирован: 20 Июль 2005, 13:53
Откуда: Volgograd, Russia
Контактная информация:

libcurl for Clarion

Сообщение morkovin »

Т.е. не получится с помощью настроек LibCurl заставить исходящий сервер оставлять свои отправленные письма в папке "Отправленные"?
Ал писал(а): 29 Сентябрь 2017, 9:15
gopstop2007 писал(а): 28 Сентябрь 2017, 22:16 - с помощью libcurl возможно оставлять копии отправленных сообщении на smtp сервере
:?:
- если исх."свои", можно завести доп.адресок и AddRecipient(Clip(CopyTo...))
- если вх."чужие", можно поиграть imap c 'COPY'
WBR, morkovin
gopstop2007
✯ Ветеран ✯
Сообщения: 1577
Зарегистрирован: 25 Март 2009, 21:55

libcurl for Clarion

Сообщение gopstop2007 »

не силен в curl, есть такой сайт http://ean13.info
там предлагают подключится через api http://ean13.info/info/api.php

Вот их описание

Код: Выделить всё

Краткое описание API:

запрос к API будет выглядеть вот таким образом: http://www.ean13.info/api.php?code=4603172600007&key=xccvg55kh43jjf
code=3145891578706 – код запрошенного товара
key= xccvgf5kh43 – ключ

Ответ придет в виде (XML):
Где:
Valid– 1/0, правильность штрих-кода (по контрольной цифре)
Loc – ссылка на страницу с товаром
Name – название товара
Desc – описание товара (если есть)
Yourlimit– количество оставшихся запросов к базе.
Так же предоставляется, бренд, производитель, и картинка товара, если такая информация есть в базе.
Полазил по примерам в https://github.com/mikeduglas/libcurl/t ... r/examples, схожее не нашел,
если есть бросьте ссылку на аналогичное. :(

Благодарю за внимание
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2598
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

libcurl for Clarion

Сообщение Дед Пахом »

Чтобы выполнить этот запрос, надо

Код: Выделить всё

  curl.Init()
  curl.SendRequest(...)
правда, я пробовал, ключ фейковый.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5395
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

libcurl for Clarion

Сообщение Игорь Столяров »

gopstop2007 писал(а): 13 Июнь 2020, 12:31 сайт http://ean13.info
Работал я с ним. Это просто очередное вымораживание бабла жителями одной соседней страны … ;)
Есть аналогичный бесплатный сервис - вот здесь уже реальное наполнение базы, но тоже есть проблемка … :(
А код, примерно, такой …

Код: Выделить всё

     Loc:ST1 = "8001090837424"   ! ЭТО ЗАПРОС ПО ШТРИХ-КОДУ

     Curl &= NEW(TCurlClass)
     Curl.Init()

     Curl.SetSSLVersion(CURL_SSLVERSION_DEFAULT)          
     Curl.SetSSLVerifyHost(false)
     Curl.SetSSLVerifyPeer(false)

     Curl.SetOpt(CURLOPT_CONNECTTIMEOUT,20)  ! МАСКИРУЕМСЯ ПОД РАБОЧУЮ ПЧЕЛУ (БРОУЗЕР)
     Loc:xRes = Curl.SetUserAgent('Mozilla/1.22 (compatible; MSIE 10.0; Windows 3.1)')

     Curl.AddHttpHeader('Content-Type: application/json; charset=utf-8')
     Curl.SetHttpHeaders()

     Loc:RespBuffer &= NewDynStr()  ! ЭТО БУФЕР ДЛЯ ПОЛУЧЕНИЯ ОТВЕТА     
                                    
     ! СОБСТВЕННО ВЫПОЛНЯЕМ ЗАПРОС                                     
     Loc:xRes = curl.SendRequest('https://barcodes.olegon.ru/api/card/name/' & Loc:ST1,'',Loc:RespBuffer)

     If Loc:xRes = CURLE_OK
        If Loc:RespBuffer.StrLen() > 0        
           В Loc:RespBuffer.Str() - ОТВЕТ СЕРВИСА, КОНВЕРТИРУЕМ В ANSI И РАСПАРСИВАЕМ
        end
     elsIf Loc:xRes = -1
        Message(' Неизвестная ошибка запроса: ' & Clip(Left(Loc:xRes)))
     else
        Message(' Ошибка запроса: ' & Clip(Left(Loc:xRes)) & '| ' & Curl.StrError(Loc:xRes))
     end
     
     ! Ну и вырубаем всё, что понаоткрывали    

     DisposeDynStr(Loc:RespBuffer)
     Loc:RespBuffer &= Null

     Curl.CleanUp()
     Dispose(Curl)
     
Абсолютно всё аналогично и с http://ean13.info - просто замените запрос. :)
«V» значит Вендетта !
gopstop2007
✯ Ветеран ✯
Сообщения: 1577
Зарегистрирован: 25 Март 2009, 21:55

libcurl for Clarion

Сообщение gopstop2007 »

Дед Пахом писал(а): 13 Июнь 2020, 14:22 Чтобы выполнить этот запрос, надо

Код: Выделить всё

  curl.Init()
  curl.SendRequest(...)
правда, я пробовал, ключ фейковый.
Спасибо
Какой ключ фейковый? В примере api или который покупается на 5000 записей?
Игорь Столяров писал(а): 13 Июнь 2020, 14:28
Работал я с ним. Это просто очередное вымораживание бабла жителями одной соседней страны … ;)
Есть аналогичный бесплатный сервис - вот здесь уже реальное наполнение базы, но тоже есть проблемка … :(
А код, примерно, такой …
......
Абсолютно всё аналогично и с http://ean13.info - просто замените запрос. :)
Спасибо большое и не знал про аналогичный сервис :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2598
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

libcurl for Clarion

Сообщение Дед Пахом »

gopstop2007 писал(а): 14 Июнь 2020, 18:29 Какой ключ фейковый?
Из Вашего примера.
С уважением, ДП
gopstop2007
✯ Ветеран ✯
Сообщения: 1577
Зарегистрирован: 25 Март 2009, 21:55

libcurl for Clarion

Сообщение gopstop2007 »

Дед Пахом писал(а): 14 Июнь 2020, 18:33
gopstop2007 писал(а): 14 Июнь 2020, 18:29 Какой ключ фейковый?
Из Вашего примера.
Рабочий, Postman возвращает ответ, броузер тоже
Игорь Столяров писал(а): 13 Июнь 2020, 14:28

Код: Выделить всё

 
     Curl.SetOpt(CURLOPT_CONNECTTIMEOUT,20)  ! МАСКИРУЕМСЯ ПОД РАБОЧУЮ ПЧЕЛУ (БРОУЗЕР)
     Loc:xRes = Curl.SetUserAgent('Mozilla/1.22 (compatible; MSIE 10.0; Windows 3.1)')
это зачем, есть проблемы?
Игорь Столяров писал(а): 13 Июнь 2020, 14:28 Абсолютно всё аналогично и с http://ean13.info - просто замените запрос. :)
Ваш сайт возвращает ответ - работает, мой ean13.info выдает ошибку
Последний раз редактировалось gopstop2007 15 Июнь 2020, 12:27, всего редактировалось 1 раз.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5395
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

libcurl for Clarion

Сообщение Игорь Столяров »

gopstop2007 писал(а): 15 Июнь 2020, 8:04 это зачем, есть проблемы?
Да, есть. Некоторые сервисы не любят когда их долбят из CURL. Например те, что живут за счёт показа рекламы в броузере.
Как я упоминал, в сервисе из моего примера тоже есть эта проблема + там владелец сервиса с повышенной тревожностью.
Ему постоянно кажется что все только и хотят, что поиметь запросами его прелесть - базу товаров с штрих-кодами … ;)
gopstop2007 писал(а): 15 Июнь 2020, 8:04 Ваш сайт возвращает ответ - работает, мой ean13.info выдает ошибку
Можно я не буду это смотреть ? ;) Получите код ошибки и посмотрите, что не нравится сервису в Вашем запросе … :)
«V» значит Вендетта !
gopstop2007
✯ Ветеран ✯
Сообщения: 1577
Зарегистрирован: 25 Март 2009, 21:55

libcurl for Clarion

Сообщение gopstop2007 »

Игорь Столяров писал(а): 15 Июнь 2020, 9:43 Да, есть. Некоторые сервисы не любят когда их долбят из CURL. Например те, что живут за счёт показа рекламы в броузере.
Как я упоминал, в сервисе из моего примера тоже есть эта проблема + там владелец сервиса с повышенной тревожностью.
Ему постоянно кажется что все только и хотят, что поиметь запросами его прелесть - базу товаров с штрих-кодами … ;)
Ваша возвращает только названия (много?) товара?
Если так то ean13.info - название + все атрибуты по товару ( описание, бренд, производитель, и картинка товара, если такая информация есть в базе)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5395
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

libcurl for Clarion

Сообщение Игорь Столяров »

gopstop2007 писал(а): 15 Июнь 2020, 10:18 название + все атрибуты по товару
Не буду спорить - поработайте и всё увидите сами. ;)
Да. Мне нужно только наименование для ускорения добавления товаров с неизвестным штрих-кодом ...
«V» значит Вендетта !
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2598
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

libcurl for Clarion

Сообщение Дед Пахом »

Я про этот фейковый ключ
gopstop2007 писал(а): 13 Июнь 2020, 12:31 code=3145891578706 – код запрошенного товара
key= xccvgf5kh43 – ключ
С уважением, ДП
gopstop2007
✯ Ветеран ✯
Сообщения: 1577
Зарегистрирован: 25 Март 2009, 21:55

libcurl for Clarion

Сообщение gopstop2007 »

Дед Пахом писал(а): 15 Июнь 2020, 11:48 Я про этот фейковый ключ
gopstop2007 писал(а): 13 Июнь 2020, 12:31 code=3145891578706 – код запрошенного товара
key= xccvgf5kh43 – ключ
Да, у них как то описание примера с реальной ссылкой не совпадает http://www.ean13.info/api.php?code=4603 ... g55kh43jjf , где ключ и штрих код другой

Как в curl можно после SendRequest сохранить результат в xml файл? Чтобы потом его разобрать.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2598
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

libcurl for Clarion

Сообщение Дед Пахом »

gopstop2007 писал(а): 15 Июнь 2020, 12:32 Как в curl можно после SendRequest сохранить результат в xml файл? Чтобы потом его разобрать.
SendRequest в одном из вариантов сохраняет результат в файл.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5395
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

libcurl for Clarion

Сообщение Игорь Столяров »

Возможно, я сейчас скажу глупость, но я её скажу ! :)

После обновления до C11.13630 пошли GPF при вызове метода TCurlHTTPClassEx.ReadFile() из под терминальной сессии
при отсутствии доступа в интернет. Локально - вроде бы блымает какое-то окно (возможно с ошибкой), но отловить не получается.
Проблема, вроде бы, уходит если убрать блок переопределения индикатора загрузки, даже на пустую процедуру. Вот это:

Код: Выделить всё

TCurlHTTPClassEx  Class(TCurlHTTPClass),Type
XFerInfo            PROCEDURE(REAL dltotal, REAL dlnow, REAL ultotal, REAL ulnow), LONG, DERIVED
                  end

MyCurl            TCurlHTTPClassEx
Т.е. такое ощущение, что перекосило вызов DERIVED процедуры. :(
При откате C11 до релиза С11.13505 (или C63) и сборки под ним приложения - проблема не наблюдается.
Понимаю, что так себе информация ... но что есть.
«V» значит Вендетта !
Ответить