|   |   | 
| 
 | 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); Делал так, никаких результатов | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |