|
WEB service Etran | ☑ | ||
---|---|---|---|---|
0
yyyuuu
05.02.20
✎
08:01
|
Здравствуйте друзья. Столкнулся с проблемой. Уже что только не делал но не получается ее решить.
ТекстЗапроса = ЗапросХМЛ; ТаймаутСоединения = 600000; ТаймаутОперации = ТаймаутСоединения; МестоположениеWSDL = АдресПодключения + "?wsdl"; Определения = Новый WSОпределения(МестоположениеWSDL, Логин, Пароль, , ТаймаутСоединения); Сервис = Определения.Сервисы.Получить(0); Точка = Сервис.ТочкиПодключения.Получить(0); ПодключениеКЭтрану = Новый WSПрокси(Определения, Сервис.URIПространстваИмен, Сервис.Имя, Точка.Имя, , ТаймаутОперации); ПодключениеКЭтрану.Пользователь = Логин; ПодключениеКЭтрану.Пароль = Пароль; ТекстXML = ТекстЗапроса; ПодключениеКЭтрану.GetBlock(Логин, Пароль, ТекстXML); ТекстОтвета = ТекстXML; Ответ не получаю, похоже по таймауту отключает. Делал через SOUPUI - так же ошибку выдавал error getting response java.net.sockettimeoutexception read timed out Увеличил время таймаута 60000000 все, стало работать. Подскажите пожалуйста все ли Я верно делаю при подключении в 1с? Потому что в 1с не работает. |
|||
1
бегинер
05.02.20
✎
08:10
|
сделай вывод отметок времени до и после получения ответа, и получишь среднее время ответа сервера ЭТРАНА АСУ-АСУ, соотв. поймешь какой таймаут делать с запасом на случай отвала сервера РЖД
|
|||
2
yyyuuu
05.02.20
✎
08:14
|
(1) 60000000 - тут больше 10 минут) Я уже сделал с запасом солидным
|
|||
3
yyyuuu
05.02.20
✎
08:18
|
Soket TimeOut в SOUPUI увеличил и нормально. Значит дело в таймауте. Вот чего мождет не хватаеть? Друзья давайте разеберимся
|
|||
4
бегинер
05.02.20
✎
08:18
|
(3) а что у тебя в 1с конкретно не работает? в каком месте ругается и как?
|
|||
5
yyyuuu
05.02.20
✎
08:21
|
(4) конкретно в 1с и пишет и 1с Интерпритирует ошибку так
{ОбщийМодуль.Этран.Модуль(156)}: Ошибка при вызове метода контекста (GetBlock) по причине: по причине: При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса: {<noindex><a class="is-fancybox" href="/redirect.php?url=aHR0cDovL3RlbXB1cmkub3JnLw==" target="_blank" rel="nofollow">http://tempuri.org/}:IEtranSysservice:GetBlock() по причине: При вызове веб-сервиса произошла ошибка. Неизвестная ошибка. Ошибка работы с Интернет: Failure when receiving data from the peer по причине: Ошибка работы с Интернет: Failure when receiving data from the peer Ругается ПодключениеКЭтрану.GetBlock(Логин, Пароль, ТекстXML) - Тут. 3 минуты думает и через 3 отваливается 3 минуты и 21 секунду |
|||
6
yyyuuu
05.02.20
✎
08:21
|
Провайдер не причем, соапУИ то работает
|
|||
7
yyyuuu
05.02.20
✎
08:29
|
Пробовал все что смог понять, ну ничего не работает. Ну хоть ты взорвись. Вторую неделю сижу и понять вообще не могу ну что еще не хватает. Может кто подключался к какому нибудь вэб сервису. Хотябы в аналогичным примером можно было бы поработать
|
|||
8
yyyuuu
05.02.20
✎
08:34
|
Вот еще один момент занимательный. 1800 вагон которые Я загружаю проходят. А 2228 Нет.
Была КОнечно мысль разделить на 2 запроса и загружать, но что делать когда вагонов будет 40000? На 40 запросов делить. |
|||
9
бегинер
05.02.20
✎
08:38
|
у тебя есть от ржд адрес с описанием: АдресПодключения + "?wsdl"
зайди в конфигуратор, в ветку "общее" и создай там WS ссылку и при создании подсунь ссылку что тебе ржд дало вида http://zzzzz?wsdl будет ws ссылка в итоге, которую в коде можно юзать: например: WSСсылка2 - Это имя созданной ws ссылки пример: прокси=wsссылки.WSСсылка2.СоздатьWSПрокси("http://www.site.ru/","OtherRequests","OtherRequestsSoap"); баланс=Прокси.GetUserBalance(RLOG_UserID); |
|||
10
yyyuuu
05.02.20
✎
08:42
|
Попробую)
|
|||
11
yyyuuu
05.02.20
✎
08:44
|
Хотя ему есть разница как подключаться в WSL?
Определения = Новый WSОпределения(МестоположениеWSDL, Логин, Пароль, , ТаймаутСоединения); Это не тоже самое? |
|||
12
yyyuuu
05.02.20
✎
08:46
|
Через прокси так же делал. только ссылку сам ему задавал
URLПространстваИменСервиса = "http://tempuri.org/"; ИмяПользователя = Константы.ETRAN_user.Получить(); Пароль = Константы.ETRAN_upass.Получить(); МестоположениеWSDL = Константы.МестоположениеWSDL.Получить(); ИмяСервиса = "IEtranSysservice"; ИмяТочкиПодключения = "IEtranSysPort"; SSL = Новый ЗащищенноеСоединениеOpenSSL(); WSОпределение = Новый WSОпределения(МестоположениеWSDL,,,,ТаймаутСоединения,SSL); WSПрокси = Новый WSПрокси(WSОпределение, URLПространстваИменСервиса, ИмяСервиса, ИмяТочкиПодключения,,ТаймаутСоединения,SSL); WSПрокси.Пользователь = ИмяПользователя; WSПрокси.Пароль = Пароль; СвояФабрикаXDTO = WSОпределение.ФабрикаXDTO; Попытка Результат = WSПрокси.GetBlock(ИмяПользователя, Пароль,ТекстЗапроса); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; |
|||
13
бегинер
05.02.20
✎
08:48
|
прокси=wsссылки.WSСсылка2.СоздатьWSПрокси("http://www.site.ru/","OtherRequests","OtherRequestsSoap";);
смотришь созданную ws ссылку в 1с и берешь из нее в код: "http://www.site.ru/" - это имя пакета ( смотришь: WSссылка>Модель данных>Пакет(в скобках имя пакета указано) http://www.site.ru/ в скобках это указано в моем случает "OtherRequests" - имя web сервиса (смотришь: WSссылка>Web-сервисы>здесь указано на третем уровне иерархии вс ссылки) OtherRequests - WSссылка>Web-сервисы>!!!OtherRequests!!! "OtherRequestsSoap" аналогично OtherRequestsSoap - WSссылка>Web-сервисы>OtherRequests>!!!OtherRequestsSoap!!! |
|||
14
бегинер
05.02.20
✎
08:50
|
когда сделаешь через обьект 1с wsссылка - 1с сама подтянет все
а так может вкоде ты всякие типы пространства имен че нить накосячил попробуй через объект wsссылка |
|||
15
бегинер
05.02.20
✎
08:54
|
а потом одну строку:
прокси=wsссылки.WSСсылка2.СоздатьWSПрокси("http://www.site.ru/","OtherRequests","OtherRequestsSoap";); если прокси создается без ошибок - значит коннект есть далее уже играешься с: Результат = прокси.GetBlock(ИмяПользователя, Пароль,ТекстЗапроса); |
|||
16
yyyuuu
05.02.20
✎
08:57
|
ДА коннект то есть, он же Мне позволяет загружать информацию до 1900 вагонов). А у Меня их 2228 а дальше будет 40000
|
|||
17
бегинер
05.02.20
✎
09:00
|
ну значит все робит :), а если упираешься в лимиты - то обратиться уже к ребятишкам с РЖД, крупняков они в попу целуют обычно :)
|
|||
18
yyyuuu
05.02.20
✎
09:03
|
Да Я им уже третью неделю обьясняю то что вот такая проблема, они говорят вали к провайдеру он виноват. Я делаю через СОАПУИ не работает показывают ошибку, увеличиваю таймаут делаю работает. Не говорю об этом. Пробую увеличить таймаут в 1с вроде бы, увеличь ты его и проблема решена. А хрен, ничего никакого движения.
Делать на запросы Я бы сделал, если бы кто нибудь сказал как 2 хмл ответа объеденить, одинаковых. Я примерно понимаю, но писанины много. Либо делить запросы, но Я не очень хочу делить. Потому что сегодня 2229 их а завтра 2 миллиона |
|||
19
Сияющий в темноте
05.02.20
✎
09:10
|
ошибка получения данных с потока-это таймаут tcp на получение данных,то есть на операцию Read с Socket,а это,насколько я помню,в 1с не настраивается.
если противоположная сторона шлет данные как черепаха,то размер данных берут из заголовка и читают в неблокирующем режиме все,что пришло,пока не придет все,что было передано - в этом случае таймаут сокета роли не играет. |
|||
20
бегинер
05.02.20
✎
09:14
|
а что за инфо получаешь - дислокацию?
если от РЖД - то они поставщики, хоть и интелекс разраб (по их заказу) |
|||
21
yyyuuu
05.02.20
✎
09:21
|
(20) Получаю дислокацию, справка 14
|
|||
22
yyyuuu
05.02.20
✎
09:22
|
(19) Я не совсем уловил смысл, но Я так понимаю сокет в 1с не настроить и все пропало?
|
|||
23
бегинер
05.02.20
✎
09:28
|
(21) мы получаем не от РЖД дислокацию, берем по rest api
цена 3.5 руб за 1 вагон (сутки слежения, каждые 30 мин обновления) интересно, у вас дешевле или дороже выходит? |
|||
24
yyyuuu
05.02.20
✎
09:47
|
Дешевле вроде потому что они нихрена не стоят))
|
|||
25
yyyuuu
05.02.20
✎
09:47
|
По этому и надо делать бесплатную)
|
|||
26
yyyuuu
05.02.20
✎
10:21
|
(23)
А ты по пакетам XDTO работаешь или ком создаешь? Схемы как у ржд или свои у них? |
|||
27
бегинер
05.02.20
✎
10:31
|
(26) мы берем у питерской "СТМ"
там и через soap можно (xml) - через XDTO WS ссылки, формат ответа (набор полей) у них свой и через rest api - там чисто post get запросы (в 1с через HTTPСоединение) и в ответ json прилетает |
|||
28
yyyuuu
05.02.20
✎
10:54
|
(27) а они у кого берут?) У РЖД?)
|
|||
29
бегинер
05.02.20
✎
11:02
|
(28) да :)
сейчас в личном кабинете РЖД можно бесплатно смотреть свои отправки дислокацию - но только свои, другой вагон не увидишь. но api работы с личным кабинетом нет, ручками смотреть 100 и более вагоном - мало приятное удовольствие т.е. у РЖД есть инфа - но удобство работы с ней отсутствует, надо подрубать vipnet и т.д. - поэтому и было много разных поставщиков дислокации, но сейчас их мало осталось - всех порезали неофициальных соотв. мы берем у СТМ - там любой вагон по номеру можно пробить (даже если не твоя отправка и не в твой адрес) |
|||
30
unregistered
05.02.20
✎
11:08
|
(23) >> цена 3.5 руб за 1 вагон (сутки слежения, каждые 30 мин обновления).
40000 вагонов * 3.5₽ * 365суток = 51 100 000₽ в год. Не слишком ли дороговато за такой сервис? |
|||
31
бегинер
05.02.20
✎
11:24
|
(30) нет
у нас грубо одна отправка занимает макс 1 месяц, грубо 150 руб за слежение за один вагон заплатим прибыль с отправки одного вагона: 100 тыс и более |
|||
32
yyyuuu
07.02.20
✎
07:37
|
Кароче сделал, все Мне кажется не правильно но работает
|
|||
33
yyyuuu
07.02.20
✎
08:08
|
ФабрикаXDTO.Тип("http://service.siw.pktbcki.rzd/", "reference14ASUResponse").Свойства.Получить("reference14ASU").Тип.Свойства.Получить("row").Тип;
Уже так сделал, все ровно говорит что: роверка дополнительного свойства: форма: Элемент имя: row: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: {http://service.siw.pktbcki.rzd/}reference14ASU |
|||
34
yyyuuu
07.02.20
✎
08:09
|
Ой это не та тема)
|
|||
35
yyyuuu
19.02.20
✎
07:08
|
Разделил на 2 запроса, иначе просто никак.
|
|||
36
yyyuuu
19.02.20
✎
10:14
|
Тут скорее всего дело в 1с именно а не в чем то другом. Потому что спокойно все проходит череp SOUP UI.
Там тоже не работало, Но Я увеличил тайм аут |
|||
37
yyyuuu
20.02.20
✎
07:40
|
Может кто как учил 1с пропиховить такой объем но у Меня отваливает по тайауту
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |