![]() |
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум | ![]() |
![]() |
Лисоводы всех стран, объединяйтесь !!! |
Re: Атол-30Ф | |||
---|---|---|---|
Victoriacom Сообщений: 80 |
Там есть куча примеров. Нужно только какой-нибудь из представленных языков знать (С, С++, С#...) А про 8.16...(и про 9ку) нужно забыть ВСЁ, что знали! В жизни это больше не пригодится. Всё, что ниже десятки, снимают с поддержки. Десятку изучать придется в принудительном порядке. Там совсем другой подход! Исправлено: Victoriacom, 18.03.19 17:48 ![]() |
||
Re: Атол-30Ф | |||
---|---|---|---|
Аспид Сообщений: 3455 Откуда: Москва |
Удовольствие еще то))) ![]() Коли воскресла эта тема. А кто то пробовал из фокса, с веб сервисом атола? Я попробовал, с лету, полный отлуп, С завидной регулярностью, получаю только статус 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 ![]() |
||
Re: Атол-30Ф | |||
---|---|---|---|
Аспид Сообщений: 3455 Откуда: Москва |
Продолжаю терзать веб сервис атола.
Решил написать кусочек на шарпе. Результат точно тот же! В Описании написано "Для добавления задания в очередь на выполнения необходимо отправить его POST-запросом на адрес hostname:16732, указав его уникальный идентификатор. В ответ сервер вернет код результата в виде HTTP-статуса." Так вот, requests в адресе, это адрес, или сам запрос?))) Ну все просто, пробую и так, и так.
string url = "http://127.0.0.1:16732/requests/";
string url = "http://127.0.0.1:16732/"; Вроде как 403 ближе к цели. Просто у меня (у сервиса?) нет прав, для доступа к кассе. Куда двигаться, не понимаю. Через апи, все работает. Но хочется через веб сервис, больно они резко меняют подходы))) ![]() |
||
Re: Атол-30Ф | |||
---|---|---|---|
Igor Korolyov Сообщений: 34065 |
Это не веб-сервис, это скорее ближе к REST API - не xml-и с Envelop-ами, а чистый и простой json - при том существенная часть инфы передаётся в url-е.
Если сказано отправлять запрос на url заканчивающийся на /requests/ то именно так и надо делать - а вовсе не к корневому ломиться - это ты по сути другой метод вызвать пытаешься. POST запрос это запрос с методом POST и телом запроса в... ну в теле запроса, даже не знаю как по другому сказать ![]() само тело запроса это json - т.е. текст того вида как в примере - 405 это ошибка "метод не разрешён" - там есть урл вида /settings или типа того (в инете пишут про это) через который надо настраивать сей веб-сервер и в т.ч. "разрешать" его работу (мне кажется это немного идиотизмом - разрешать работу веб-сервера заходя на страницу этого же веб-сервера - ну да разрабам виднее). Возможно дело как раз в том что у тебя "не разрешено" использовать этот вариант управления. ------------------ WBR, Igor ![]() |
||
Re: Атол-30Ф | |||
---|---|---|---|
of63 Сообщений: 20841 Откуда: Н.Новгород |
() бывает, что сервис возвращает разные коды ошибки (403, 405 и пр. не 200), но в ответе (в хидерах и в теле) лежит что-то полезное, например, инфа для повторного обращения к сервису, с которой он вернет то, что надо...
![]() |
||
Re: Атол-30Ф | |||
---|---|---|---|
Аспид Сообщений: 3455 Откуда: Москва |
Увы, как то там не однозначно. И написано не как у тебя, а ххх/requests , без конечного слеша. Возможно опечатка. Возможно. Но скорее, они по обыкновению.... "биип" ))) Простой эксперимент. Выключаю кассу, захожу на settings, ничего не меняется. Веб сервер, просто не показывает ни как, есть ли у него связь с кассой. Проверить наличие, можно только запросами... с которыми ничего не выходит( Странно, ведь у кого то работает, что не так?( Вообще, впечатление, веб сервер, просто не видит кассу. Неа. Ничего нет. Весь ответ смотрел. На фоксе код совсем простой. Может кто что заметит? 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с-нику. Есть готовые обработки, пусть попробует. Ежели что то выйдет, будем разбираться. Потому как сам я просто не знаю, что еще сделать. Конечно, можно просто через апи. Но задело))) ![]() |
||
Re: Атол-30Ф | |||
---|---|---|---|
of63 Сообщений: 20841 Откуда: Н.Новгород |
...User-Agent добавь какой-нибудь, бывает, что сервер без него отвечает какой-то ерундой
![]() |
||
Re: Атол-30Ф | |||
---|---|---|---|
Аспид Сообщений: 3455 Откуда: Москва |
У меня же клиент. Я про сервер, кроме того, что он на жабе, и крутится как служба виндов, ничего и не знаю. И это не сайт, а веб сервис. Т.е. нормально, когда ему лишней инфы не шлют. Ну и заодно - не знаю как этот фейк сформировать и передать ![]() А потому, и думать в эту сторону, как то особо не вижу смысла) ![]() |
||
Re: Атол-30Ф | |||
---|---|---|---|
of63 Сообщений: 20841 Откуда: Н.Новгород |
> На фоксе код совсем простой. Может кто что заметит?
Я не понял ответ, про "У меня же клиент. Я про сервер, кроме того, что он на жабе"... ![]() |
||
Re: Атол-30Ф | |||
---|---|---|---|
Аспид Сообщений: 3455 Откуда: Москва |
И сам не пойму, что думал, когда это писал
![]() Основное там, что не знаю как фейковый User-Agent создать. Да и тупо, как прописать его посылку, тоже не знаю))) Ну видимо в начале, были какие то мысли, по поводу того, что это вряд ли поможет. Хотел лаконично, получилось непонятно) ![]() |
||
Re: Атол-30Ф | |||
---|---|---|---|
of63 Сообщений: 20841 Откуда: Н.Новгород |
Вот эту строчку если написал
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 ![]() |
||
Re: Атол-30Ф | |||
---|---|---|---|
Аспид Сообщений: 3455 Откуда: Москва |
Увы, Ничего не вышло.
вот код, модифицированный по Олегу) 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 ![]() |
||
Re: Атол-30Ф | |||
---|---|---|---|
of63 Сообщений: 20841 Откуда: Н.Новгород |
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,следовательно никакой перевод не выполняется. Файл будет переписан. ![]() |
||
Re: Атол-30Ф | |||
---|---|---|---|
Аспид Сообщений: 3455 Откуда: Москва |
В json это указывает на массив. Хелп атола Тело задания состоит из двух обязательных полей: uuid - уникальный идентификатор запроса, сгенерированный пользователем. Рекомендуется использовать формат UUID request - одно и более JSON-заданий из раздела JSON-задания, объединенные в массив. В случае, если задание одно, записывать его в массив необязательно. Да на скорую руку слепил. разница=0 ))) Я ж просто возможности хотел протестировать. И тут сломался))) ps Попробовал послать любимое "qqq" в запросе. Ответ получил точно такой же!!!! Попробовать закрыть смену... Там json сложный. из шарпа попробую. Исправлено: Аспид, 26.03.19 10:58 ![]() |
||
Re: Атол-30Ф | |||
---|---|---|---|
of63 Сообщений: 20841 Откуда: Н.Новгород |
Снифернуть надо как-то рабочий обмен. Инструкция суха...
![]() |
||
Re: Атол-30Ф | |||
---|---|---|---|
Аспид Сообщений: 3455 Откуда: Москва |
Вот и хочу, что бы из 1С попробовали.
Но у 1С-ника, руки никак не дойдут. А другого рабочего, в перспективе... тока мой)))) ![]() |
||
Re: Атол-30Ф | |||
---|---|---|---|
Igor Korolyov Сообщений: 34065 |
Почему именно этот объект то? Не надо этого - BOM наверняка могут смутить сервер (для json стандарт говорит НЕ использовать BOM-символы). По сути только в файлах они и имеют смысл, чтобы открыв чёрт-те что за файл понять в какой он кодировке. Очевидно этого заголовка мало. Вряд ли сервер смотрит на user-agent, а вот на Content-Length и Accept вполне может обратить внимание. Кроме того, хотя это и неправильно, но попробуй в Content-Type дополнительно указать и кодировку - "application/json;charset=utf-8" ------------------ WBR, Igor ![]() |
||
Re: Атол-30Ф | |||
---|---|---|---|
Аспид Сообщений: 3455 Откуда: Москва |
Неожиданный вопрос. А какой? Так уж сложилось, всегда его использую, для работы с сервисами. А что в нем не так? Я и на шарпе его же... может в нем что то?
HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url);
httpRequest.Method = "POST"; И в шарпе указываю и длинну Попробовал, добавил http.SetRequestHeader("Accept-Charset","utf-8") Убрал BOM. Ничего. Результат тот же. ![]() |
||
Re: Атол-30Ф | |||
---|---|---|---|
Igor Korolyov Сообщений: 34065 |
Msxml2.XMLHTTP или вообще голый WinInet АПИ (но это уже крайности). "От одного" это не "одно и то же". В дотнете помимо указанного есть ещё WebClient и HttpClient - а каждого свои особенности и плюсы/минусы определяющие сферу применения. Для "старых" клиентских приложений рекомендуют всё же Msxml2.XMLHTTP - он поверх стека IE (точнее WinInet) работает, подерживает прокси (в т.ч. авто-определение), куки... Я вообще-то ничего не говорил про заголовок Accept-Charset... Лучше у разработчиков уточнять что именно они ожидают - какие заголовки в частности. ------------------ WBR, Igor ![]() |
||
Re: Атол-30Ф | |||
---|---|---|---|
of63 Сообщений: 20841 Откуда: Н.Новгород |
гыгы. На том конце, на "сервере", "сидят" такие же разработчики, как и вы и мы )
![]() |
||
© 2000-2021 Fox Club  |