libcurl for Clarion
Добавлено: 12 Ноябрь 2015, 20:11
				
				
			Место общения программистов, форум разработчиков БД на Clarion
https://www.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