Имя: Пароль:
1C
 
В продолжение темы "Web-сервисы пример аэрофлот"
0 kostik79
 
08.05.09
01:36
Тема находится тут: v8: v8: Web-сервисы пример аэрофлот.

Web-сервис аэрофлота откликается и удается получить данные...

Хочу написать прогу на 8.1 для автоматизации игры на бирже ставок "BetFair".
Есть Web-сервис http://https://api.betfair.com/global/v3/BFGlobalService.wsdl
Описание можно найти здесь: http://bdp.betfair.com/index.php?option=com_content&task=blogcategory&id=24&Itemid=76

Код:

СервисБФ = WSСсылки.BetFairGlobal.СоздатьWSПрокси
("http://www.betfair.com/publicapi/v3/BFGlobalService/", "BFGlobalService", "BFGlobalService");
                   
ТипLoginResp = СервисБФ.ФабрикаXDTO.Тип("http://www.betfair.com/publicapi/types/global/v3/", "LoginResp");
БФLoginResp  = СервисБФ.ФабрикаXDTO.Создать(ТипLoginResp);
   
ТипLoginReq = СервисБФ.ФабрикаXDTO.Тип("http://www.betfair.com/publicapi/types/global/v3/", "LoginReq");
БФLoginReq  = СервисБФ.ФабрикаXDTO.Создать(ТипLoginReq);

 БФLoginReq.ipAddress        = "ххх.ххх.ххх.ххх";
 БФLoginReq.locationId       = 0;
 БФLoginReq.username         = "login";
 БФLoginReq.password         = "password";
 БФLoginReq.productId        = 82;
 БФLoginReq.vendorSoftwareId = 0;
   
БФLoginResp = СервисБФ.login(БФLoginReq);


БФLoginReq - объект с типом входного параметра функции login
БФLoginResp  объект с типом возвращаемого значения функции login

При выполнении login(БФLoginReq) возникает такая ошибка:


{Обработка.Обработка2.Форма.Форма(44)}: Ошибка при вызове метода контекста (login): Ошибка вызова операции сервиса:  {http://www.betfair.com/publicapi/v3/BFGlobalService/}:BFGlobalService:login()
   БФLoginResp = СервисБФ.login(БФLoginReq);
по причине:
Ошибка вызова операции сервиса:  {http://www.betfair.com/publicapi/v3/BFGlobalService/}:BFGlobalService:login()
по причине:
Неизвестная ошибка. Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://www.betfair.com/publicapi/types/global/v3/}LoginResp - [2,396]
Проверка дополнительного свойства:
   форма: Элемент
   имя: header
по причине:
Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://www.betfair.com/publicapi/types/global/v3/}LoginResp - [2,396]
Проверка дополнительного свойства:
   форма: Элемент
   имя: header
по причине:
Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://www.betfair.com/publicapi/types/global/v3/}APIResponseHeader - [2,434]
Проверка дополнительного свойства:
   форма: Элемент
   имя: errorCode
по причине:
Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {http://www.betfair.com/publicapi/types/global/v3/}APIResponseHeader


Ошибка та же, если не заполнять свойства объекта БФLoginReq

Понимаю, что разбираться с этим не минутное дело, но мож кого заинтересует...
1 ТелепатБот
 
гуру
08.05.09
01:36
2 kostik79
 
08.05.09
18:25
ап
3 kot_bcc
 
08.05.09
20:00
Там регистрация нужна. Регистрироваться, чтобы подключиться к веб-сервису -
слишком напрягает для "просто помочь":) Есть аккаунт готовый на "посмотреть"?
4 kot_bcc
 
08.05.09
20:05
+(3) А вообще очень похоже на отказ без возврата LoginResp.
5 kostik79
 
09.05.09
15:00
Я думаю, что дело не в регистрации
т.к. если не заполнять свойства объекта БФLoginReq (username,password и т.д.)
то происходит та же ошибка, а по идее должен вернуть "неудачу".
6 Asmody
 
09.05.09
17:02
намедни разбирались... не дружит 1Ска с ВС на java. что-то там с wsdl не так. не хочет она преобразовывать ответный xml под xdto. пока решения не нашел.
если у кого есть доступ на партнерку, попробуйте задать этот вопрос там
7 kostik79
 
09.05.09
17:09
Спасибо за ответ. Теперь хоть знаю что это не мой косяк.
8 mini_root
 
10.05.09
19:14
Игрались в январе со связкой 8.1<->CXF(Java), имхо движок веб-сервисов для 8.1 на тот момент был не рабочий (это при том что они уже несколько лет подряд орут про веб-сервисы) и не готов к практическому применению:
1. Сделали на CXF сервис принимающий и возвращающий сложные типы данных, запустили, проверили wsdl, описание типов - все на месте.
2. Зарегили в 1с, все зашибись, сложные типы данных увидились!
3. Попытались вызвать метод, принимающий сложный тип в качестве аргумента - со стороны жабы вылетел NullPointerException.
4. Включил логи, написал свой обработчик для CXF, вывалил SOAP пакет на консоль, а там у элементов пустой неймспейс, и префиксы расставлены как попало,
и хоть ты тресни.
5. Отписались в хотлайн.

ИМХО, веб сервисы в восьмерки для галочки, и не более - аэрофлотовский пример работает (НА ПОЛУЧЕНИЕ!), а если хочешь что-то свое и более или менее серьезное - облом. Про всякие WS-* спецификации лучше уж вообще не заикаться.

P.S. Серьезных движков для веб-сервисов оооочень немного (WCF, Metro, Axis/CXF/JRE'шный - если не нужны транзакции и пр. извращения) и одинэсовский к ним явно не относится. Так шо если хотите юзать действительно сложные сервисы из 1с - пишете свою COM компоненту на C#, а оттуда уже юзайте WCF.
9 kostik79
 
11.05.09
02:52
А хотлайн чёнить ответил?
10 mini_root
 
12.05.09
11:44
Пофиксили вроде, но мы не проверяли.
11 akostrov
 
12.05.09
14:30
Вот почитай, мой пост, никто не ответил у меня такая проблема возникла после смены платфомы
12 akostrov
 
12.05.09
14:30
13 lvi15
 
12.05.09
17:01
Я "присобачивал" к 1с ВнешнююКомпоненту на Net,
и в обработке 1с писал:
   ПриОткрытии
          ПодключитьВнешнююКомпоненту("AddIn.Conn1c");
          COM_компонента  =  Новый ("AddIn.Conn1c");
.................
А далее
      COM_компонента.ИмяWebСервиса(ТаблЗнач1, ТаблЗнач2) и т.д.
или    ТаблЗнач = COM_компонента.ИмяWebСервиса()

Но через 1с-ку, конечно, было бы технологичнее.
Не успел до конца разобраться как связывать XDTO c тем XML, который возвращает
сервис - все время были какие-то ошибки, да и связываться надо было через SSL.
14 kostik79
 
13.05.09
23:03
11 Не, у меня без разницы, что на 8.1.11 что на 8.1.13 одинаково ругается.
15 mini_root
 
14.05.09
17:18
Пиши COM компоненту на C#, из нее юзай штатный WCF.
16 kostik79
 
14.05.09
19:46
Если б я знал C# то юзал бы ВС оттуда. Видимо придется подразобраться с С#
2 + 2 = 3.9999999999999999999999999999999...