On-line: гостей 4. Всего: 4 [подробнее..]
АвторСообщение





Пост N: 698
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 02.08.23 18:01. Заголовок: ТСД - терминал сбора данных


Добрый день

Начальник склад поставил задачу внедрить терминалы сбора данных при сборке заказа клиенту. Думаю, они упрощают работу сотрудников, особенно новичков. Плюс снижают количество ошибок.

Как вижу тех. процесс: кладовщик получает накладную для сборки, "пикает" ее штрих-код (уже внедрено для учета выработки), после чего моя программа "каким-то образом" должна загрузить содержимое этой накладной в терминал, например:
1) АдресХранения1, Товар1, колво1, Штрихкод1
2) АдресХранения2, Товар2, колво2, Штрихкод2
3) ...

Кладовщик с загруженным списком идет по складу, "пикает" товар, а терминал ему пишет - "таких еще три штуки", или "положи на место, неверный товар".

После окончания сборки кладовщик пикает накладную еще раз, после чего терминал выгружает обратно информацию: "собрано без ошибок", либо "собрано с ошибками" и тп...

С какой стороны посоветуете подходить к этому вопросу ? Никогда с этими штуками дела не имел.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 38 , стр: 1 2 All [только новые]


администратор




Пост N: 8070
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.03.25 09:09. Заголовок: Sergy пишет: Подска..


Sergy пишет:

 цитата:
Подскажите пожалуйста, как сделать "hello world" для REST API.




 
curl_global_init()
TG_sendmessage("blabla","1111",hello world)

Func Tg_sendmessage(bot_token,id_chat,cmsg)
local curl:=curl_easy_init()
local URL:="https://api.telegram.org/bot"
local tmp,hret
cMsg:=UUrlEncode(hb_strToUtf8(cMsg))

URL+=bot_token+"/sendMessage?chat_id="+id_chat+"&text="+cMsg

curl_easy_setopt(curl, HB_CURLOPT_HTTPPOST, 1)
curl_easy_setopt(curl, HB_CURLOPT_SSL_VERIFYPEER, 0 )
curl_easy_setopt(curl, HB_CURLOPT_URL, URL)
curl_easy_setopt(curl, HB_CURLOPT_DL_BUFF_SETUP )
curl_easy_perform(curl)
tmp:=curl_easy_dl_buff_get( curl )
hb_JsonDecode(tmp,@hret)
curl_easy_cleanup(curl)
return hret



Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 715
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.03.25 14:24. Заголовок: Dima, спасибо, начин..


Dima, спасибо, начинаю разбираться...
вот как происходит авторизация: https://www.cleverence.ru/support/44273/?cat=747

делаю у себя через GET:
   pCurl := curl_easy_init() 
IF !EMPTY( pCurl )
curl_easy_setopt( pCurl, HB_CURLOPT_URL, "http://localhost:9000/api/v1/session?username=Vasya&password=123456" )
curl_easy_setopt( pCurl, HB_CURLOPT_DL_BUFF_SETUP )
curl_easy_perform( pCurl )
tmp := curl_easy_dl_buff_get( pCurl )
curl_easy_cleanup( pCurl )
? tmp
? Hash2Text( hb_JsonDecode( tmp ) )
?
lResult := TRUE
//
ELSE
? "curl_easy_init() error"
ENDIF
Работает, выдает json с двумя токенами, как и положено.

Пробую через POST:
   pCurl := curl_easy_init() 
IF !EMPTY( pCurl )
curl_easy_setopt( pCurl, HB_CURLOPT_URL, "http://localhost:9000/api/v1/session" )
curl_easy_setopt( pCurl, HB_CURLOPT_HTTPPOST, TRUE )
curl_easy_setopt( pCurl, HB_CURLOPT_HTTPHEADER,;
{ "POST /oauth/token HTTP/1.1",;
"Host: http://localhost:9000/api/v1/session",;
"Content-Type: application/x-www-form-urlencoded" } )
curl_easy_setopt( pCurl, HB_CURLOPT_POSTFIELDS, "grant_type=password&client_id=data&client_secret=user&username=Vasya&password=123456" )
curl_easy_setopt( pCurl, HB_CURLOPT_DL_BUFF_SETUP )
curl_easy_perform( pCurl )
tmp := curl_easy_dl_buff_get( pCurl )
curl_easy_cleanup( pCurl )
? tmp
? Hash2Text( hb_JsonDecode( tmp ) )
?
lResult := TRUE
ELSE
? "curl_easy_init() error"
ENDIF
Получаю текст текст вместо JSON: html...body... HTTP Error 400. The request hostname is invalid.

Подскажите плиз, что я делаю не так ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8071
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.03.25 14:43. Заголовок: Хрен знает Пробни во..


Хрен знает
Пробни вот это
curl_easy_setopt( pCurl, HB_CURLOPT_CUSTOMREQUEST, 'POST' )
curl_easy_setopt( pCurl, HB_CURLOPT_POST, TRUE )
curl_easy_setopt( pCurl, HB_CURLOPT_SSL_VERIFYPEER, .f. ) // это видимо не надо

Sergy пишет:

 цитата:
curl_easy_setopt( pCurl, HB_CURLOPT_HTTPPOST, TRUE )


вот вместо этого

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8072
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.03.25 14:46. Заголовок: Sergy пишет: { "..


Sergy пишет:

 цитата:
{ "POST /oauth/token HTTP/1.1",;
"Host: http://localhost:9000/api/v1/session",;
"Content-Type: application/x-www-form-urlencoded" } )


Это ты в доке взял своей ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8073
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.03.25 14:48. Заголовок: curl_easy_setopt( pC..


curl_easy_setopt( pCurl, HB_CURLOPT_HTTPHEADER, {"Content-Type: application/json","charset=utf-8"} )
может чего скажет тебе

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 716
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.03.25 17:22. Заголовок: Dima пишет: Это ты ..


Dima пишет:

 цитата:
Это ты в доке взял своей ?


да. вот отсюда: https://www.cleverence.ru/support/44273/?cat=747
 
Авторизация методом POST
Авторизация по логину и паролю происходит путем отправки POST запроса на сервер, в результате которого возвращается access_token и refresh token в формате JSON.

Пример запроса:

POST /oauth/token HTTP/1.1
Host: mobilesmarts.ru/api/session
Content-Type: application/x-www-form-urlencoded

grant_type=password&client_id=123&client_secret=user&username=user@domain.ru&password=123456


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 717
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.03.25 17:57. Заголовок: Убрал лишнее из заго..


Убрал лишнее из заголовков, получилось вот так:
   pCurl := curl_easy_init() 
IF !EMPTY( pCurl )
curl_easy_setopt( pCurl, HB_CURLOPT_URL, "http://localhost:9000/api/v1/session" )
curl_easy_setopt( pCurl, HB_CURLOPT_POST )
curl_easy_setopt( pCurl, HB_CURLOPT_HTTPHEADER, "Content-Type: application/x-www-form-urlencoded" )
curl_easy_setopt( pCurl, HB_CURLOPT_POSTFIELDS, "grant_type=password&username=Vasya&password=123456" )
curl_easy_setopt( pCurl, HB_CURLOPT_DL_BUFF_SETUP )
//
nError := curl_easy_perform( pCurl )
tmp := curl_easy_dl_buff_get( pCurl )
? tmp
//
IF nError == HB_CURLE_OK
? Hash2Text( hb_JsonDecode( tmp ) )
?
lResult := TRUE
ELSE
? "curl error:", nError
ENDIF
curl_easy_cleanup( pCurl )
//
ELSE
? "curl_easy_init() error"
ENDIF

заработало
--
upd: поправил curl_easy_setopt( pCurl, HB_CURLOPT_HTTPPOST, TRUE ) => curl_easy_setopt( pCurl, HB_CURLOPT_POST )
тк он помечен как deprecated

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 718
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.03.25 18:23. Заголовок: Едем дальше: https:/..


Едем дальше: https://www.cleverence.ru/support/44412/?cat=747

метод POST - пока понятно, сижу, разбираюсь, как быть со всеми этими DELETE, PATCH, GET, PUT...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8074
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.03.25 18:41. Заголовок: Sergy пишет: https:..


Sergy пишет:

 цитата:
https://www.cleverence.ru/support/44412/?cat=747


жесть конечно , придется конкретно "покурить"
возможно на сайте оригинале более понятно изложено
cleverence.com

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8075
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.03.25 18:44. Заголовок: Sergy пишет: HB_CUR..


Sergy пишет:

 цитата:
HB_CURLOPT_POSTFIELDS
curl_easy_setopt( pCurl, HB_CURLOPT_POSTFIELDS, "grant_type=password&username=Vasya&password=123456" )



думаю это можно заменить на HB_CURLOPT_USERPWD ,
и передавать "Vasya"+":"+"123456"
curl_easy_setopt( curl, HB_CURLOPT_USERPWD,cuser+":"+cpassword)

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 719
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.03.25 20:52. Заголовок: Dima пишет: жесть к..


Dima пишет:

 цитата:
жесть конечно , придется конкретно "покурить"
возможно на сайте оригинале более понятно изложено
cleverence.com


Так подозреваю, что это "наши" и они выходят на зарубежные рынки. Потому как некоторые страницы вообще еще не готовы, например тут: https://www.cleverence.com/support/38845/

 цитата:
This Wiki page has not yet been created.
Was the article useful for you?



Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 720
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.03.25 20:54. Заголовок: Dima пишет: думаю э..


Dima пишет:

 цитата:
думаю это можно заменить на HB_CURLOPT_USERPWD ,
и передавать "Vasya"+":"+"123456"
curl_easy_setopt( curl, HB_CURLOPT_USERPWD,cuser+":"+cpassword)


Погоняю и так и этак. Никогда раньше не сталкивался с этой системой. Кто-бы мог подумать, что "error 400 - invalid URL" происходит из-за "лишних" данных в заголовке запроса...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1994
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 23.03.25 21:57. Заголовок: Sergy пишет: Погоня..


Sergy пишет:

 цитата:
Погоняю и так и этак.


Есть специальные инструменты для отладки rest. Это insomnia, postman и похожие. Они наглядно показывают и сам запрос и ответ rest сервера. Методом проб и ошибокчерез curl это мазахизм. Алгоритм простой, через insomnia тестируешь запрос, потом программируешь его в harbour. Вариантов, где ошибиться только через harbour - миллион, начиная от кодировок и заканчивая спец символами в URL, не говоря уже о том, что тупо не требуется перекомпиляция

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 721
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.03.25 22:41. Заголовок: Haz пишет: Есть спе..


Haz пишет:

 цитата:
Есть специальные инструменты для отладки rest. Это insomnia, postman и похожие. Они наглядно показывают и сам запрос и ответ rest сервера. Методом проб и ошибокчерез curl это мазахизм. Алгоритм простой, через insomnia тестируешь запрос, потом программируешь его в harbour. Вариантов, где ошибиться только через harbour - миллион, начиная от кодировок и заканчивая спец символами в URL, не говоря уже о том, что тупо не требуется перекомпиляция


О, это действительно удобно, пошел изучать... Благодарю.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8076
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.03.25 22:52. Заголовок: Sergy пишет: О, это..


Sergy пишет:

 цитата:
О, это действительно удобно, пошел изучать... Благодарю.


Там проги для 64 бит только
А так да Игорь прав !

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 722
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 24.03.25 12:28. Заголовок: Dima пишет: Там про..


Dima пишет:

 цитата:
Там проги для 64 бит только


Посмотрел postman - он вообще умеет работать в браузере. Мне пока более, чем достаточно.
Осталось понять, какие именно поля куда запихивать - что в HB_CURLOPT_HTTPHEADER, а что в HB_CURLOPT_POSTFIELDS

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 723
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 24.03.25 14:41. Заголовок: Как оказалось, у cle..


Как оказалось, у cleverence есть встроенная система отладки запросов через Swagger. https://www.cleverence.ru/support/44372/

После установки Mobile SMARTS, можно зайти по определенному URI на localhost и видеть описания всех методов работы. Там же можно отправлять запросы и проверять орветы.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8078
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.03.25 14:48. Заголовок: Sergy пишет: видеть..


Sergy пишет:

 цитата:
видеть описания всех методов работы


Да типа того
https://www.cleverence.com/swagger/rtl15/

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 38 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 127
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет