libcurl for Clarion
Добавлено: 07 Май 2020, 16:15
Не за что, на моём месте так поступил бы каждый!
Место общения программистов, форум разработчиков БД на Clarion
https://forum.clarionlife.net/
Ал писал(а): ↑29 Сентябрь 2017, 9:15gopstop2007 писал(а): ↑28 Сентябрь 2017, 22:16 - с помощью libcurl возможно оставлять копии отправленных сообщении на smtp сервере
- если исх."свои", можно завести доп.адресок и AddRecipient(Clip(CopyTo...))
- если вх."чужие", можно поиграть imap c 'COPY'
Код: Выделить всё
Краткое описание API:
запрос к API будет выглядеть вот таким образом: http://www.ean13.info/api.php?code=4603172600007&key=xccvg55kh43jjf
code=3145891578706 – код запрошенного товара
key= xccvgf5kh43 – ключ
Ответ придет в виде (XML):
Где:
Valid– 1/0, правильность штрих-кода (по контрольной цифре)
Loc – ссылка на страницу с товаром
Name – название товара
Desc – описание товара (если есть)
Yourlimit– количество оставшихся запросов к базе.
Так же предоставляется, бренд, производитель, и картинка товара, если такая информация есть в базе.
Код: Выделить всё
curl.Init()
curl.SendRequest(...)
Работал я с ним. Это просто очередное вымораживание бабла жителями одной соседней страны …
Код: Выделить всё
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)
СпасибоДед Пахом писал(а): ↑13 Июнь 2020, 14:22 Чтобы выполнить этот запрос, надоправда, я пробовал, ключ фейковый.Код: Выделить всё
curl.Init() curl.SendRequest(...)
Спасибо большое и не знал про аналогичный сервисИгорь Столяров писал(а): ↑13 Июнь 2020, 14:28
Работал я с ним. Это просто очередное вымораживание бабла жителями одной соседней страны …
Есть аналогичный бесплатный сервис - вот здесь уже реальное наполнение базы, но тоже есть проблемка …
А код, примерно, такой …
......
Абсолютно всё аналогично и с http://ean13.info - просто замените запрос.
Из Вашего примера.
Рабочий, Postman возвращает ответ, броузер тоже
это зачем, есть проблемы?Игорь Столяров писал(а): ↑13 Июнь 2020, 14:28Код: Выделить всё
Curl.SetOpt(CURLOPT_CONNECTTIMEOUT,20) ! МАСКИРУЕМСЯ ПОД РАБОЧУЮ ПЧЕЛУ (БРОУЗЕР) Loc:xRes = Curl.SetUserAgent('Mozilla/1.22 (compatible; MSIE 10.0; Windows 3.1)')
Ваш сайт возвращает ответ - работает, мой ean13.info выдает ошибкуИгорь Столяров писал(а): ↑13 Июнь 2020, 14:28 Абсолютно всё аналогично и с http://ean13.info - просто замените запрос.
Да, есть. Некоторые сервисы не любят когда их долбят из CURL. Например те, что живут за счёт показа рекламы в броузере.
Можно я не буду это смотреть ? Получите код ошибки и посмотрите, что не нравится сервису в Вашем запросе …gopstop2007 писал(а): ↑15 Июнь 2020, 8:04 Ваш сайт возвращает ответ - работает, мой ean13.info выдает ошибку
Ваша возвращает только названия (много?) товара?Игорь Столяров писал(а): ↑15 Июнь 2020, 9:43 Да, есть. Некоторые сервисы не любят когда их долбят из CURL. Например те, что живут за счёт показа рекламы в броузере.
Как я упоминал, в сервисе из моего примера тоже есть эта проблема + там владелец сервиса с повышенной тревожностью.
Ему постоянно кажется что все только и хотят, что поиметь запросами его прелесть - базу товаров с штрих-кодами …
Не буду спорить - поработайте и всё увидите сами.
gopstop2007 писал(а): ↑13 Июнь 2020, 12:31 code=3145891578706 – код запрошенного товара
key= xccvgf5kh43 – ключ
Да, у них как то описание примера с реальной ссылкой не совпадает http://www.ean13.info/api.php?code=4603 ... g55kh43jjf , где ключ и штрих код другойДед Пахом писал(а): ↑15 Июнь 2020, 11:48 Я про этот фейковый ключgopstop2007 писал(а): ↑13 Июнь 2020, 12:31 code=3145891578706 – код запрошенного товара
key= xccvgf5kh43 – ключ
SendRequest в одном из вариантов сохраняет результат в файл.gopstop2007 писал(а): ↑15 Июнь 2020, 12:32 Как в curl можно после SendRequest сохранить результат в xml файл? Чтобы потом его разобрать.
Код: Выделить всё
TCurlHTTPClassEx Class(TCurlHTTPClass),Type
XFerInfo PROCEDURE(REAL dltotal, REAL dlnow, REAL ultotal, REAL ulnow), LONG, DERIVED
end
MyCurl TCurlHTTPClassEx