Странная работа getEvents

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Веб-сервисы » Прямой доступ
Страницы: 1 2 След.
Странная работа getEvents
Никак не могу разобраться, каким образом получать информацию о своих заявках.
Отправляю заявку, получаю requestNumber.
Далее вызываю getEvents с параметром lastEventID = полученному requestNumber. В результате статус операции получаю положительный, однако данные по запросу пустые. loadEventDetails работает только по eventID, которого у меня нет.
Если вызываю getEvents без параметров, я получаю список своих запросов, причем их несколько, с одним requestNumber и разными eventID. По eventID я также получаю пустые данные из GetEvents. В списке же события находятся определенное время, потом список становится пустым и есть вероятность, что я просто не успею обработать весь список если анализировать каждый раз его целиком.
Собственно вопрос. Как и по какому параметру надо отслеживать состояние конкретной заявки? Или может есть какой-то порядок вызова методов, после выполнения которого, я однозначно получу информацию о текущем состоянии своей заявки?
Да, мы тоже столкнулись с такой проблемой. Изначально не известно eventID, но при вызове getEvents без параметров возвращается список все ваших запросов причем каждый повторяется столько раз сколько статус у него уже получено (например: заявление принято, заявление в обработке и т.д.). В этом списке уже будет
eventID по которому можно сделать детальный запрос loadEventDetails. Действительно loadEventDetails иногда пустой, подозреваю в случаях когда заявление принято в работу и ожидает результата окончания обработки. но когда идет отказ или ошибка то в loadEventDetails как раз и должны быть причины ошибки или отказа. еще замечено что с пустым запросом getEventsвыдается 200 первых по списку, остальные не видны. по этой причине заявления периодически надо удалять deleteEvents, чтобы увидеть последние.
Схема такая.

1) отправляем заявку методом createRequest, на выходе получаем requestNumber;

2) периодически вызываем getEvents (). Аргумент - пустая строка либо null. На выходе получаем список идентификаторов (eventsIDs) всех событий (200 первых) из ящика пользователя, по сертификату которого установлен TLS канал;
3) для каждого из eventsIDs получаем детальные описания события. requestNumber, для которого пришло данное событие, содержится в поле requestNumber детального описания. Там же есть дата события, код события и некий неформализованный message.
Если код события = 002, то в message содержится код оплаты в виде "Код платежа 5527293218408084". Из которого надо брать 16 цифр кода для оплаты. Состояние конкретной заявки нужно определять по её коду. Событие с максимальным кодом есть состояние заявки в текущий момент. Хотя, я чувствую, что в этом месте есть нюанс, но пока проблем не было;
(loadEventDetails "пустой" у меня никогда не возвращался. message в loadEventDetails да, бывает пустым.)
4) вызываем deleteEvents со списком eventsIDs, которые мы успешно обработали. По идее, вместо deleteEvents разработчиками предусмотрена возможность вызова getEvents и передачей в него последнего из списка eventsIDs. Но добиться нормальной работы такой схемы мне не удалось;

и опять к пункту 2)

P.S.

Цитата
Алексей Ябров пишет:
В списке же события находятся определенное время, потом список становится пустым и есть вероятность, что я просто не успею обработать весь список если анализировать каждый раз его целиком.
Без вызова deleteEvents события из ящика пользователя не удаляются.
В deleteEvents надо передавать список только полностью обработанных событий. Тогда и теряться ничего не будет.
Спасибо за подробные разъяснения, будем пробовать...

В том то и дело, что я метод deleteEvents не вызывал, сами куда то пропали. Хотя сейчас уже третий день все на месте. Возможно был очередной глюк тестового сервера.
ну, на тестовом сервере может происходить вообще всё что угодно )
Цитата
Роман Камерлох пишет:
ну, на тестовом сервере может происходить вообще всё что угодно )
Это да :D

А к чему привязывается список событий? Сначала я думал что к сертификату. Но, попробовал отправить через портал (подписал сертификатом), получил номер заявки. А из своей программы читаю события по этому же сертификату и получаю пустой список...
Я думаю, что
Цитата
Роман Камерлох пишет:
из ящика пользователя, по сертификату которого установлен TLS канал;
А это может быть другой сертификат, которым подписана заявка.
Цитата
Роман Камерлох пишет:
Я думаю, что
Цитата
Роман Камерлох пишет:
из ящика пользователя, по сертификату которого установлен TLS канал;
А это может быть другой сертификат, которым подписана заявка.
Тогда другой вопрос, а если у ЭЦП закончился срок, то после его продления, вроде, выдается новый сертификат. Как тогда обработать заявки от старого сертификата?
Будет ли выдаваться список событий по просроченному сертификату?
если новый сертификат будет "продлён", то события по новому сертификату будут приходить.
Ну, по крайней мере, мне приходили :)
По какому из полей сертификата происходит идентификация - незнаю.
Цитата
Роман Камерлох пишет:
если новый сертификат будет "продлён", то события по новому сертификату будут приходить.
Ну, по крайней мере, мне приходили :)
По какому из полей сертификата происходит идентификация - незнаю.
Ясно, спасибо. Просто так долго подписи у меня еще нет, а вопросы возникают :)
Цитата
Роман Камерлох пишет:
4) вызываем deleteEvents со списком eventsIDs, которые мы успешно обработали.
Что представляет собой элемент списка? При попытке выполения запроса выводит следующую ошибку:
скрин.png (5.49 КБ)
String[] eventIDs
А можно конкретный пример в виде XML?
Изменено: Дмитрий Рыженко - 28.07.2014 16:30:24
Ребята, подскажите, может кто сталкивался, непонятная работа метода getEvents, почему то не возвращается весь список заявок, а только те которые были созданы методом createRequest.
Была отправлена заявка через портал, известен идентификатор последнего события, через портал статус проверяется, а через getEvents - пусто ..........

Заранее спасибо!
А что странного?
В getEvents попадают заявки поданные через веб-сервисы.
GetEvent возвращает сообщения из очереди. Идентификатором очереди является отпечаток сертификата, если сообщение было передано другим способом/ с помощью другого сертификата, то оно будет в другой очереди. принцип такой
Я не удаляю события. Я ловлю последнее из всей очереди и передаю в метод getevents, и так далее.
Как мне кажется, события фильтруютсч по email. Если задать пустой бинарник обращения, в результате пишется, тело запроса должно быть больше N BYTE и электронку
Да, по email сертификата, по которому устанавливается TLS соединение.
В продолжение темы... то есть нет никакой возможности через сервис видеть события по заявкам отправленные через портал?

Понял, вопрос закрыт:-)
Изменено: Григорий Поверенный - 03.04.2015 22:34:53
Ага. Действительно обнаружено непонятная работа с получением событий... Во первых события получатся в разнобой.... и если брать последнее, некоторые события будут будут не получены. Если брать последнее по времени, тоже некоторые будут не получены.

Я делал так, получал первые, сортировал по времени. Брал последнее, ещё раз брал события, после ещё раз бежал по списку с шагом 50 и брал ещё раз события. Каждый раз по немного но новые появлялись.... вообще не понятно почему так....
Создал запрос техподдержке. Посмотрим что ответят.

Сделал простейшее приложение по тестированию запросов.

Ещё сделаю сравнение для наглядности...
csRosreestrTest.zip (816.08 КБ)
РР молчит... ещё раз сделал запрос, только уже по телефону.

Ваш запрос №322404 создан на сайте rosreestr.ru 27.05.2015 в 10:26.
Ответ на Ваш запрос будет отправлен по электронной почте на

Месяц и тишина....
Изменено: Григорий Поверенный - 23.06.2015 08:57:32
Кто же разработчик этого сервиса... ТП или даёт телефон 800 707 31 00 или предлагает сделать запрос по этому запросу...
Через ЦА пока выйти на разработчика не получается...
Форум походу только для нас. РР боюсь про вопросы с форума и не знает:-)
Зарядил обращение на оф ящик.

Добрый день.

Вопрос связан с работой сервиса прямого взаимодействия. Точнее с не корректностью его работы. Сервис расположен по url https://portal.rosreestr.ru:4433/cxf/External.

Функция сервиса - getEvents работает некорректно. Как я понял, для получения всех событий требуется с начала в параметрах этой функции с начала передать пустое значение, функция вернёт 200 событий. После чего передать ИД последнего события и снова запросить, и так далее. В реальности данный алгоритм не возвращает все события.

Попытка усложнения алгоритма таким образом:

1. Получаем события вышеописанным образом.
2. Потом с N ым шагом берём ИД событий и производим запрос.
3. Так повторяем пока новых событий не будет появляться.

Даже таким образом некоторые события не будут получены.

В результате по каким то обращениям мы не сможем увидеть корректную текущую ситуацию., что может привести к неприятным последствиям.

С уважением, Григорий Поверенный.
Страницы: 1 2 След.
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)