| Автор | Сообщение |
|
|
| |
Пост N: 698
Зарегистрирован: 08.07.06
|
|
Отправлено: 02.08.23 18:01. Заголовок: ТСД - терминал сбора данных
Добрый день Начальник склад поставил задачу внедрить терминалы сбора данных при сборке заказа клиенту. Думаю, они упрощают работу сотрудников, особенно новичков. Плюс снижают количество ошибок. Как вижу тех. процесс: кладовщик получает накладную для сборки, "пикает" ее штрих-код (уже внедрено для учета выработки), после чего моя программа "каким-то образом" должна загрузить содержимое этой накладной в терминал, например: 1) АдресХранения1, Товар1, колво1, Штрихкод1 2) АдресХранения2, Товар2, колво2, Штрихкод2 3) ... Кладовщик с загруженным списком идет по складу, "пикает" товар, а терминал ему пишет - "таких еще три штуки", или "положи на место, неверный товар". После окончания сборки кладовщик пикает накладную еще раз, после чего терминал выгружает обратно информацию: "собрано без ошибок", либо "собрано с ошибками" и тп... С какой стороны посоветуете подходить к этому вопросу ? Никогда с этими штуками дела не имел.
|
 |

|
|
Ответов - 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
|
 |

|
|
|
| |
Пост 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. Подскажите плиз, что я делаю не так ?
|
 |

|
|
|
| |
Пост 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 ) |
| вот вместо этого
|
 |

|
|
|
| |
Пост 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" } ) |
| Это ты в доке взял своей ?
|
 |

|
|
|
| |
Пост 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"} ) может чего скажет тебе
|
 |

|
|
|
| |
Пост 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
|
 |

|
|
|
| |
Пост 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
|
 |

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

|
|
|
| |
Пост N: 8074
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.03.25 18:41. Заголовок: Sergy пишет: https:..
Sergy пишет: | цитата: | | https://www.cleverence.ru/support/44412/?cat=747 |
| жесть конечно , придется конкретно "покурить" возможно на сайте оригинале более понятно изложено cleverence.com
|
 |

|
|
|
| |
Пост 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)
|
 |

|
|
|
| |
Пост 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? |
| 
|
 |

|
|
|
|
|
| |
Пост 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" происходит из-за "лишних" данных в заголовке запроса...
|
 |

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

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

|
|
|
| |
Пост N: 8076
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.03.25 22:52. Заголовок: Sergy пишет: О, это..
Sergy пишет: | цитата: | О, это действительно удобно, пошел изучать... Благодарю. |
| Там проги для 64 бит только А так да Игорь прав !
|
 |

|
|
|
| |
Пост N: 722
Зарегистрирован: 08.07.06
|
|
Отправлено: 24.03.25 12:28. Заголовок: Dima пишет: Там про..
Dima пишет: | цитата: | | Там проги для 64 бит только |
| Посмотрел postman - он вообще умеет работать в браузере. Мне пока более, чем достаточно. Осталось понять, какие именно поля куда запихивать - что в HB_CURLOPT_HTTPHEADER, а что в HB_CURLOPT_POSTFIELDS
|
 |

|
|
|
| |
Пост N: 723
Зарегистрирован: 08.07.06
|
|
Отправлено: 24.03.25 14:41. Заголовок: Как оказалось, у cle..
Как оказалось, у cleverence есть встроенная система отладки запросов через Swagger. https://www.cleverence.ru/support/44372/ После установки Mobile SMARTS, можно зайти по определенному URI на localhost и видеть описания всех методов работы. Там же можно отправлять запросы и проверять орветы.
|
 |

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

|
|
Ответов - 38
, стр:
1
2
All
[только новые]
|
|