![]() |
![]() |
![]() |
|
Web-сервис, Получение ответа | ☑ | ||
---|---|---|---|---|
0
Honesty
25.08.10
✎
13:53
|
Следующий код работает (спасибо этому форуму, почитал темы, разобрался), связался с разработчиком, они ответили что их сервер возвращает ответ.
Вопрос в том как мне этот ответ обработать, подскажите хотябы в какую сторону копать, насколько я понимаю нужно описать получаемый ответ, в моем случае именно ответ возвразает ошибку (внизу поста), хотя сервер возвращает мне ответ, т.е. наеврное эта ошибка "Ошибка вызова операции сервиса: {http://comarch.pl/loyalty/web/ws/clm}:iLPService:CheckBalance()" не совсем актуальна Код в 1С Код лОпределения = новый WSОпределения("http://kabinet.lokal.lviv.ua/ewebservice/services/iLP2?wsdl", СокрЛП(Пользователь), СокрЛП(Пароль)); СервисWS = новый WSПрокси(лОпределения, "http://comarch.pl/loyalty/web/ws/clm", "iLPService", "iLP2"); URI = "http://comarch.pl/loyalty/web/ws/clm"; СервисWS.Пользователь = СокрЛП(Пользователь)+""; СервисWS.Пароль = СокрЛП(Пароль); //Для отправки пакета ТипОбъектаXDTOСоздаваемого = СервисWS.ФабрикаXDTO.Тип(URI,"CheckBalanceData"); ТипОбъектаXDTOСоздаваемогоКонтекст = СервисWS.ФабрикаXDTO.Тип(URI,"ContextData"); НовыйОбъектXDTO = СервисWS.ФабрикаXDTO.Создать(ТипОбъектаXDTOСоздаваемого,); СтрокаКонтекст = СервисWS.ФабрикаXDTO.Создать(ТипОбъектаXDTOСоздаваемогоКонтекст,); СтрокаКонтекст.partnerCode = "DEF"; СтрокаКонтекст.locationCode = "TS01"; СтрокаКонтекст.token = ""; СтрокаКонтекст.CardNo = "0999998"; СтрокаКонтекст.TransactionDate = Формат(ТекВремя,"ДФ=YYMMddhhmmss"); НовыйОбъектXDTO.context = СтрокаКонтекст; НовыйОбъектXDTO.type = "B"; Ответ = СервисWS.CheckBalance(НовыйОбъектXDTO); Ответ который я получаю от сервера (пример из документации) Код <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <CheckBalanceResponse xmlns="http://comarch.pl/loyalty/web/ws/clm"> <Response xmlns=""> <errorCode>0</errorCode> <repeatFlag>false</repeatFlag> <processingDate>100813111118</processingDate> <points>0</points> <balance>310</balance> <messageType>1</messageType> <online>true</online> </Response> </CheckBalanceResponse> </soapenv:Body> </soapenv:Envelope> Ошибка {Обработка.Обработка1.Форма.Форма(36)}: Ошибка при вызове метода контекста (CheckBalance): Ошибка вызова операции сервиса: {http://comarch.pl/loyalty/web/ws/clm}:iLPService:CheckBalance() Возврат СервисWS.CheckBalance(НовыйОбъектXDTO); по причине: Ошибка вызова операции сервиса: {http://comarch.pl/loyalty/web/ws/clm}:iLPService:CheckBalance() по причине: Неизвестная ошибка. Ошибка преобразования данных XDTO: Чтение объекта типа: {http://comarch.pl/loyalty/web/ws/clm}ResponseData - [1,325] Проверка дополнительного свойства: форма: Элемент имя: errorCode по причине: Ошибка преобразования данных XDTO: Чтение объекта типа: {http://comarch.pl/loyalty/web/ws/clm}ResponseData - [1,325] Проверка дополнительного свойства: форма: Элемент имя: errorCode по причине: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: {http://comarch.pl/loyalty/web/ws/clm}ResponseData |
|||
1
Honesty
26.08.10
✎
18:06
|
up
|
|||
2
Honesty
27.08.10
✎
17:00
|
Помогите, пожалуйста =/
|
|||
3
DmitrO
27.08.10
✎
17:11
|
написано же: Структура объекта не соответствует типу
значение в элементе errorCode наверно не того типа. надо проверить по схеме: описание элемента ResponseData, как там описан элемент errorCode какой указан тип и соответствует ли он значению возвращаемому в элементе errorCode. |
|||
4
sash-ml
27.08.10
✎
17:30
|
wsdlку в студию
|
|||
5
Honesty
27.08.10
✎
18:42
|
А не проблемма ли что в возвращаемом объекте нет описания типа? <Response xmlns="">
errorCode - тип int (http://www.w3.org/2001/XMLSchema) <errorCode>0</errorCode> wsdlку, сорри не совсем понимаю что нужно? )) сам ничего подобного не использовал ) |
|||
6
sash-ml
27.08.10
✎
18:49
|
WSDL это XML который выдает тебе ссылка
http://kabinet.lokal.lviv.ua/ewebservice/services/iLP2?wsdl Или скажи имя/пароль к сервису чтоб посмотреть что он там выдает. |
|||
7
Honesty
27.08.10
✎
18:55
|
(6) Стукни плиз в аську - 190171417, дам юзвера и пасс
|
|||
8
Honesty
27.08.10
✎
19:20
|
||||
9
sash-ml
27.08.10
✎
22:20
|
в конфигураторе добавляеш в Общие\WS-Ссылки новую ссылку и в нее кидаеш путь http://kabinet.lokal.lviv.ua/ewebservice/services/iLP2?wsdl
открываеш то что получилось и видиш что возращаемое значение содержит тип ResponseData (http://comarch.pl/loyalty/web/ws/clm) отсюда следует что "ответ" нужно инициализировать вроде: ТипОтветаXDTOСоздаваемого = СервисWS.ФабрикаXDTO.Тип(URI,"ResponseData"); Ответ = СервисWS.ФабрикаXDTO.Создать(ТипОтветаXDTOСоздаваемого ,); ... ... Ответ = СервисWS.CheckBalance(НовыйОбъектXDTO); |
|||
10
Honesty
28.08.10
✎
07:05
|
отсюда следует что "ответ" нужно инициализировать вроде:
ТипОтветаXDTOСоздаваемого = СервисWS.ФабрикаXDTO.Тип(URI,"ResponseData"); Ответ = СервисWS.ФабрикаXDTO.Создать(ТипОтветаXDTOСоздаваемого ,); ... ... Ответ = СервисWS.CheckBalance(НовыйОбъектXDTO); Делал так, никаких результатов |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |