Сериализация объекта полученного из Web сервиса

Тема в разделе "Lotus - Программирование", создана пользователем Nikotin, 26 окт 2009.

  1. Nikotin

    Nikotin Гость

    Ну вообщем встала задача обратиться из Лотуса к Веб сервису.
    С обращением проблем особо не возникло.
    Код (Text):
    Sub Test()
    Dim Res As Variant
    sWSDL="http://.../Service.asmx?WSDL"
    Set Client =CreateObject("MSOSOAP.SoapClient30")
    Call Client.mssoapinit (sWSDL)
    CLient.ClientProperty("ServerHTTPRequest") = True
    CLient.ConnectorProperty("Timeout") = 70000
    Set Res=Client.CeateArea("test", "test")
    End Sub
    И получаем объект Res, я знаю его структуру, но обращение из разряда X = Res.A выдают ошибку.
    Соответственно есть 2 пути решения проблемы:
    1.Возвращать переменные строго заданного типа, но это плохое решение.
    2. Сериализовать полученный объект... и вот тут и встает вопрос КАК? На Jave вроде примеров много, но мне интересно узнать есть ли решение на Scripte?
     
  2. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    простейшее, что приходит на ум - преобразовать нужные поля в разделенную строку, получить ее, распарсить и сформировать на этих значениях свой объект.
    думаю, где-то так оно и работает :)
     
  3. Nikotin

    Nikotin Гость

    Ну эт понятно =)
    Но вопрос собственно говоря в чем...
    Например используя XMLHTTP сервис вернет чистый XML , и его можно парсить Лотусинными средствами. На XMLHTTP , кстати и примеров побольше, так что попробую еще и на нем реализовать.
    Но вот , что ворзвращает MS Soap? Я считаю что в нем(SOAP) есть какой то парсер его же объектов, а так как с веб сервисами раньше толком дела не имел, многое остается непонятно...
    Вот можно например поподробней , что такое MS SoapReader? что это за COM такой?
     
  4. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    сам соап не юзал.
    подозреваю, что соап определяет автоматическую сериализацию/десериализацию

    или то корба?.. короче, я тебя токо запутаю ))
     
  5. Nikotin

    Nikotin Гость

    А можешь, тогда пример кода на XMLHTTP? Или ты не на нем писал?
     
  6. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    не особо... некоторые тесты с ajax проводил только...
     
  7. Nikotin

    Nikotin Гость

    Вообщем все оказалось просто :)

    Так как дебагер Lotus'а не возвращал мне структуру объекта, я переписал все в обычный VB, и там уже посмотрел структуру полученного объекта. И понял что xml лежит вы Res.Context.xml. Ну распарсить данный xml - лекго, да и не моя задача :)
    Получилось :
    Код (Text):
    Dim Res As Variant
    sWSDL=".../Service.asmx?WSDL"
    Set Client =CreateObject("MSOSOAP.SoapClient30")
    Call Client.mssoapinit (sWSDL)
    CLient.ClientProperty("ServerHTTPRequest") = True
    CLient.ConnectorProperty("Timeout") = 70000
    Set Res=Client.CeateArea("test", "test")
    ResXml = Res.Context.xml
    Msgbox ResXml
    Всем спасибо
     
Загрузка...

Поделиться этой страницей