:: Visual Foxpro, Foxpro for DOS
Re: Атол-30Ф
Victoriacom

Сообщений: 111
Дата регистрации: 08.12.2010
Sejko
Я с этим Атол первый раз , может кто-то помочь
кто нибудь поделиться примерами продаж и возвратов , X -отчет , Z- отчет?
Com порт как задается

Там есть куча примеров. Нужно только какой-нибудь из представленных языков знать (С, С++, С#...)

А про 8.16...(и про 9ку) нужно забыть ВСЁ, что знали! В жизни это больше не пригодится. Всё, что ниже десятки, снимают с поддержки.
Десятку изучать придется в принудительном порядке. Там совсем другой подход!



Исправлено 4 раз(а). Последнее : Victoriacom, 18.03.19 17:48
Ratings: 0 negative/1 positive
Re: Атол-30Ф
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Victoriacom
Читай хэлп integration.atol.ru и получай удовольствие.
Удовольствие еще то)))

Коли воскресла эта тема. А кто то пробовал из фокса, с веб сервисом атола?
Я попробовал, с лету, полный отлуп, С завидной регулярностью, получаю только статус 403 или 405
Т.е. даже не могу понять, работает сервис с кассой или нет.

settings and about возвращают все что надо.

Вот строка запроса
{"uuid": "dcb697cc-3f2a-11e8-9113-0f05fcc9d7aa","request":[{"type":"getDeviceInfo"}]}
Ясно что uuid в каждом случае конкретный
Вот вариант, сформированный из MS SQL
{"uuid":"8770B21A-CCCA-4A5B-B0E1-E1A3F9B07BCE","request":{"type":"getDeviceInfo"}}



Исправлено 1 раз(а). Последнее : Аспид, 22.03.19 11:44
Ratings: 0 negative/0 positive
Re: Атол-30Ф
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Продолжаю терзать веб сервис атола.
Решил написать кусочек на шарпе.
Результат точно тот же!
В Описании написано
"Для добавления задания в очередь на выполнения необходимо отправить его POST-запросом на адрес hostname:16732, указав его уникальный идентификатор. В ответ сервер вернет код результата в виде HTTP-статуса."
Так вот, requests в адресе, это адрес, или сам запрос?)))
Ну все просто, пробую и так, и так.
string url = "http://127.0.0.1:16732/requests/";
возвращает 405
string url = "http://127.0.0.1:16732/";
возвращает 403
Вроде как 403 ближе к цели.
Просто у меня (у сервиса?) нет прав, для доступа к кассе.
Куда двигаться, не понимаю.

Через апи, все работает. Но хочется через веб сервис, больно они резко меняют подходы)))
Ratings: 0 negative/0 positive
Re: Атол-30Ф
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Это не веб-сервис, это скорее ближе к REST API - не xml-и с Envelop-ами, а чистый и простой json - при том существенная часть инфы передаётся в url-е.
Если сказано отправлять запрос на url заканчивающийся на /requests/ то именно так и надо делать - а вовсе не к корневому ломиться - это ты по сути другой метод вызвать пытаешься.
POST запрос это запрос с методом POST и телом запроса в... ну в теле запроса, даже не знаю как по другому сказать
само тело запроса это json - т.е. текст того вида как в примере - 405 это ошибка "метод не разрешён" - там есть урл вида /settings или типа того (в инете пишут про это) через который надо настраивать сей веб-сервер и в т.ч. "разрешать" его работу (мне кажется это немного идиотизмом - разрешать работу веб-сервера заходя на страницу этого же веб-сервера - ну да разрабам виднее). Возможно дело как раз в том что у тебя "не разрешено" использовать этот вариант управления.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Атол-30Ф
of63
Автор

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
() бывает, что сервис возвращает разные коды ошибки (403, 405 и пр. не 200), но в ответе (в хидерах и в теле) лежит что-то полезное, например, инфа для повторного обращения к сервису, с которой он вернет то, что надо...
Ratings: 0 negative/0 positive
Re: Атол-30Ф
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Igor Korolyov
url заканчивающийся на /requests/
Увы, как то там не однозначно. И написано не как у тебя, а ххх/requests , без конечного слеша.
Возможно опечатка.
Igor Korolyov
Возможно дело как раз в том что у тебя "не разрешено" использовать этот вариант управления.
Возможно. Но скорее, они по обыкновению.... "биип" )))
Простой эксперимент. Выключаю кассу, захожу на settings, ничего не меняется.
Веб сервер, просто не показывает ни как, есть ли у него связь с кассой.
Проверить наличие, можно только запросами... с которыми ничего не выходит(
Странно, ведь у кого то работает, что не так?(

Вообще, впечатление, веб сервер, просто не видит кассу.
of63
лежит что-то полезное
Неа. Ничего нет. Весь ответ смотрел.
На фоксе код совсем простой. Может кто что заметит?
Local http as "WinHttp.WinHttpRequest"
http = Createobject("WinHttp.WinHttpRequest.5.1")
cJson = '{"uuid": "dcb697cc-3f2a-11e8-9113-0f05fcc9d7aa","request":[{"type":"getDeviceInfo"}]}'
*in UTF-8
STRTOFILE(cJson ,'qy.txt',4)
Request=FILETOSTR('qy.txt')
cUrl="http://127.0.0.1:16732/requests/"
http.Open("POST",cUrl)
http.SetRequestHeader("Content-Type", "application/json")
http.Send(Request )
?http.ResponseText
?http.status

Дал 1с-нику. Есть готовые обработки, пусть попробует. Ежели что то выйдет, будем разбираться.
Потому как сам я просто не знаю, что еще сделать.
Конечно, можно просто через апи. Но задело)))
Ratings: 0 negative/0 positive
Re: Атол-30Ф
of63
Автор

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
...User-Agent добавь какой-нибудь, бывает, что сервер без него отвечает какой-то ерундой
Ratings: 0 negative/0 positive
Re: Атол-30Ф
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
of63
...User-Agent добавь какой-нибудь, бывает, что сервер без него отвечает какой-то ерундой
У меня же клиент. Я про сервер, кроме того, что он на жабе, и крутится как служба виндов, ничего и не знаю.
И это не сайт, а веб сервис. Т.е. нормально, когда ему лишней инфы не шлют.

Ну и заодно - не знаю как этот фейк сформировать и передать
А потому, и думать в эту сторону, как то особо не вижу смысла)
Ratings: 0 negative/0 positive
Re: Атол-30Ф
of63
Автор

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> На фоксе код совсем простой. Может кто что заметит?
Я не понял ответ, про "У меня же клиент. Я про сервер, кроме того, что он на жабе"...
Ratings: 0 negative/0 positive
Re: Атол-30Ф
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
И сам не пойму, что думал, когда это писал

Основное там, что не знаю как фейковый User-Agent создать.
Да и тупо, как прописать его посылку, тоже не знаю)))

Ну видимо в начале, были какие то мысли, по поводу того, что это вряд ли поможет.
Хотел лаконично, получилось непонятно)
Ratings: 0 negative/0 positive
Re: Атол-30Ф
of63
Автор

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Вот эту строчку если написал
http.SetRequestHeader("Content-Type", "application/json")
, то добавь еще одну такую же про User-Agent, например:
http.SetRequestHeader("User-Agent", "Mozilla/4.0")

Ответы тоже надо смотреть не только в http.ResponseText, но и прочитать возвращенные заголовки:
? http.getResponseHeader("Content-Type")
как посмотреть все возвращенные хидеры - не знаю, но снифферы как-то это делают

Аа, вот как:
getAllResponseHeaders() - возвращает набор строк (разделитель ВКПС), строки вида "имя_хидера: значение"



Исправлено 4 раз(а). Последнее : of63, 25.03.19 15:17
Ratings: 0 negative/0 positive
Re: Атол-30Ф
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Увы, Ничего не вышло.
вот код, модифицированный по Олегу)
CLEAR
Local http as "WinHttp.WinHttpRequest"
http = Createobject("WinHttp.WinHttpRequest.5.1")
cJson = '{"uuid": "dcb697cc-3f2a-11e8-9113-0f05fcc9d7aa","request":[{"type":"getDeviceInfo"}]}'
*in UTF-8
STRTOFILE(cJson ,'qy.txt',4)
Request=FILETOSTR('qy.txt')
SET STEP ON
cUrl="http://127.0.0.1:16732/requests/"
http.Open("POST",cUrl)
http.SetRequestHeader("Content-Type", "application/json")
http.SetRequestHeader("User-Agent", "Mozilla/4.0")
http.Send(Request )
STRTOFILE(http.ResponseText,'resp.txt')
STRTOFILE(http.getAllResponseHeaders(),'head.txt')
Вот ответы
тело
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 405 Method Not Allowed</title>
</head>
<body><h2>HTTP ERROR 405</h2>
<p>Problem accessing /requests/. Reason:
<pre> Method Not Allowed</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.9.v20180320</a><hr/>
</body>
</html>
хидер
Cache-Control: must-revalidate,no-cache,no-store
Date: Tue, 26 Mar 2019 05:06:04 GMT
Content-Length: 343
Content-Type: text/html;charset=iso-8859-1
Server: Jetty(9.4.9.v20180320)

зы. Что заметил, только что.
Content-Type: text/html;charset=iso-8859-1
а не UTF-8.
Атол же, четко требует UTF-8.
первые 256 у них совпадают, потому вроде как и все ок, но может здесь что то...?
Или этот в чем закодирован ответ?



Исправлено 1 раз(а). Последнее : Аспид, 26.03.19 08:28
Ratings: 0 negative/0 positive
Re: Атол-30Ф
of63
Автор

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Method Not Allowed
а какой метод не поддерживается? Вот этот? Может он неправильно записан (квадратные скобки какие-то...)?
'{"uuid": "dcb697cc-3f2a-11e8-9113-0f05fcc9d7aa","request":[{"type":"getDeviceInfo"}]}'

кстати, зачем фокусы с STRTOFILE?
4 - Добавит в начале файла UTF-8 Byte Order Mark (BOM) EF BB BF. При этом принимается, что cExpression в кодировке UTF-8,следовательно никакой перевод не выполняется. Файл будет переписан.
Ratings: 0 negative/0 positive
Re: Атол-30Ф
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
of63
квадратные скобки какие-то
В json это указывает на массив.
Хелп атола
Тело задания состоит из двух обязательных полей:
uuid - уникальный идентификатор запроса, сгенерированный пользователем. Рекомендуется использовать формат UUID
request - одно и более JSON-заданий из раздела JSON-задания, объединенные в массив. В случае, если задание одно, записывать его в массив необязательно.
of63
Добавит в начале файла UTF-8
Да на скорую руку слепил.
разница=0 )))

Я ж просто возможности хотел протестировать.
И тут сломался)))

ps Попробовал послать любимое "qqq" в запросе.
Ответ получил точно такой же!

Попробовать закрыть смену...
Там json сложный. из шарпа попробую.



Исправлено 1 раз(а). Последнее : Аспид, 26.03.19 10:58
Ratings: 0 negative/0 positive
Re: Атол-30Ф
of63
Автор

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Снифернуть надо как-то рабочий обмен. Инструкция суха...
Ratings: 0 negative/0 positive
Re: Атол-30Ф
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Вот и хочу, что бы из 1С попробовали.
Но у 1С-ника, руки никак не дойдут.
А другого рабочего, в перспективе... тока мой))))
Ratings: 0 negative/0 positive
Re: Атол-30Ф
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Аспид
http = Createobject("WinHttp.WinHttpRequest.5.1")
Почему именно этот объект то?
Аспид
STRTOFILE(cJson ,'qy.txt',4)
Request=FILETOSTR('qy.txt')
Не надо этого - BOM наверняка могут смутить сервер (для json стандарт говорит НЕ использовать BOM-символы). По сути только в файлах они и имеют смысл, чтобы открыв чёрт-те что за файл понять в какой он кодировке.
Аспид
http.SetRequestHeader("Content-Type", "application/json")
Очевидно этого заголовка мало.
Вряд ли сервер смотрит на user-agent, а вот на Content-Length и Accept вполне может обратить внимание.
Кроме того, хотя это и неправильно, но попробуй в Content-Type дополнительно указать и кодировку - "application/json;charset=utf-8"


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Атол-30Ф
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Igor Korolyov
Почему именно этот объект то?
Неожиданный вопрос.
А какой?
Так уж сложилось, всегда его использую, для работы с сервисами.
А что в нем не так?
Я и на шарпе его же... может в нем что то?
HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url);
httpRequest.Method = "POST";
По крайней мере, мне кажется, что они от одного...
И в шарпе указываю и длинну

Попробовал, добавил
http.SetRequestHeader("Accept-Charset","utf-8")
Убрал BOM.

Ничего. Результат тот же.
Ratings: 0 negative/0 positive
Re: Атол-30Ф
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Аспид
Igor Korolyov
Почему именно этот объект то?
Неожиданный вопрос.
А какой?
Msxml2.XMLHTTP или вообще голый WinInet АПИ (но это уже крайности).
Аспид
Я и на шарпе его же... может в нем что то?
...
По крайней мере, мне кажется, что они от одного.
"От одного" это не "одно и то же". В дотнете помимо указанного есть ещё WebClient и HttpClient - а каждого свои особенности и плюсы/минусы определяющие сферу применения.
Для "старых" клиентских приложений рекомендуют всё же Msxml2.XMLHTTP - он поверх стека IE (точнее WinInet) работает, подерживает прокси (в т.ч. авто-определение), куки...

Аспид
http.SetRequestHeader("Accept-Charset","utf-8")
Ничего. Результат тот же.
Я вообще-то ничего не говорил про заголовок Accept-Charset...
Лучше у разработчиков уточнять что именно они ожидают - какие заголовки в частности.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Атол-30Ф
of63
Автор

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
гыгы. На том конце, на "сервере", "сидят" такие же разработчики, как и вы и мы )
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 35 AndyNigmatec  (Гостей: 34)

© 2000-2024 Fox Club 
Яндекс.Метрика