for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Лисоводы   всех   стран,  объединяйтесь !!!  

Список Форумов  :: Visual Foxpro, Foxpro for DOS
  

Re: Атол-30Ф
Victoriacom

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

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

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



Исправлено: Victoriacom, 18.03.19 17:48
Ratings: 0 negative/1 positive

Re: Атол-30Ф
Аспид

Сообщений: 3424
Откуда: Москва
Дата: 21.03.19 13:39:29
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"}}



Исправлено: Аспид, 22.03.19 11:44
Ratings: 0 negative/0 positive

Re: Атол-30Ф
Аспид

Сообщений: 3424
Откуда: Москва
Дата: 22.03.19 12:05:43
Продолжаю терзать веб сервис атола.
Решил написать кусочек на шарпе.
Результат точно тот же!
В Описании написано
"Для добавления задания в очередь на выполнения необходимо отправить его 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

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


------------------
WBR, Igor
Ratings: 0 negative/0 positive

Re: Атол-30Ф
of63

Сообщений: 19939
Откуда: Н.Новгород
Дата: 22.03.19 22:07:15
() бывает, что сервис возвращает разные коды ошибки (403, 405 и пр. не 200), но в ответе (в хидерах и в теле) лежит что-то полезное, например, инфа для повторного обращения к сервису, с которой он вернет то, что надо...
Ratings: 0 negative/0 positive

Re: Атол-30Ф
Аспид

Сообщений: 3424
Откуда: Москва
Дата: 25.03.19 09:23:20
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

Сообщений: 19939
Откуда: Н.Новгород
Дата: 25.03.19 11:57:30
...User-Agent добавь какой-нибудь, бывает, что сервер без него отвечает какой-то ерундой
Ratings: 0 negative/0 positive

Re: Атол-30Ф
Аспид

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

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

Re: Атол-30Ф
of63

Сообщений: 19939
Откуда: Н.Новгород
Дата: 25.03.19 13:01:31
> На фоксе код совсем простой. Может кто что заметит?
Я не понял ответ, про "У меня же клиент. Я про сервер, кроме того, что он на жабе"...
Ratings: 0 negative/0 positive

Re: Атол-30Ф
Аспид

Сообщений: 3424
Откуда: Москва
Дата: 25.03.19 13:38:17
И сам не пойму, что думал, когда это писал

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

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

Re: Атол-30Ф
of63

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

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

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



Исправлено: of63, 25.03.19 15:17
Ratings: 0 negative/0 positive

Re: Атол-30Ф
Аспид

Сообщений: 3424
Откуда: Москва
Дата: 26.03.19 08:22:13
Увы, Ничего не вышло.
вот код, модифицированный по Олегу)
  
  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 у них совпадают, потому вроде как и все ок, но может здесь что то...?
Или этот в чем закодирован ответ?



Исправлено: Аспид, 26.03.19 08:28
Ratings: 0 negative/0 positive

Re: Атол-30Ф
of63

Сообщений: 19939
Откуда: Н.Новгород
Дата: 26.03.19 10:00:43
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Ф
Аспид

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

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

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

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



Исправлено: Аспид, 26.03.19 10:58
Ratings: 0 negative/0 positive

Re: Атол-30Ф
of63

Сообщений: 19939
Откуда: Н.Новгород
Дата: 26.03.19 11:22:57
Снифернуть надо как-то рабочий обмен. Инструкция суха...
Ratings: 0 negative/0 positive

Re: Атол-30Ф
Аспид

Сообщений: 3424
Откуда: Москва
Дата: 26.03.19 13:37:27
Вот и хочу, что бы из 1С попробовали.
Но у 1С-ника, руки никак не дойдут.
А другого рабочего, в перспективе... тока мой))))
Ratings: 0 negative/0 positive

Re: Атол-30Ф
Igor Korolyov

Сообщений: 33823
Дата: 26.03.19 23:38:56
Аспид
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Ф
Аспид

Сообщений: 3424
Откуда: Москва
Дата: 27.03.19 08:47:16
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

Сообщений: 33823
Дата: 28.03.19 00:05:22
Аспид
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

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



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

On-line: 9 Chemberzhy Oleg  (Гостей: 7)

30.11.2020 23:10:45 exec: 0.2
Mem: 1.468 Mb

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