WEB-служба на C# и клиент на Delphi

Всем доброго времени суток.
Проблема с взаимодействием клиента на Delphi с web-службой, написанной на с#. Служба обращается к базе на MS SQL-сервере.
Сгенерировал pas с интерфейсом к web-методам и функцией получения этого интерфейса (GetWebServiceSoap).
Бросил на форму THTTPRio.
Вызываю web-методы так:
R:=(RIO as WebServiceSoap).GetDeviceId(271); // GetDeviceId — как вы догадались, web-метод
или так:
GetWebServiceSoap(false, '', RIO).GetDeviceId(271);
В OnAfterExecute компонента проверяю SOAPResponse.
Но для набора данных возвращается только xml-схема, а для простых данных — значение, которое методы возвращают, когда не могут подключиться к базе, или запрос ничего не возвращает.
В базе точно есть данные и другие программы на с# успешно дёргают эти же методы.
Объясните, плж. что я делаю не так. Такое впечатление, что база не дает службе подключиться, если службу запрашивает delphi-клиент.
Самое удивительное, что когда служба и база находились в локальной сети, но сервер со службой смотрел в internet, то через internet данные удавалось получить.
  • +1
  • 18 января 2011, 23:25
  • Jungle

Комментарии (2)

RSS свернуть / развернуть
+
+1
Дело в том, что Delphi неправильно генерирует файл в WSDL Importer. Обратите внимание, он делает так:

initialization
  InvRegistry.RegisterInterface(TypeInfo(WebServiceSoap), '', 'utf-8');
  InvRegistry.RegisterDefaultSOAPAction(TypeInfo(WebServiceSoap), '');
  RemClassRegistry.RegisterXSClass(GetSendingsResult, '', 'GetSendingsResult');
  RemClassRegistry.RegisterXSClass(GetPartsResult, '', 'GetPartsResult');


, а надо так

initialization
  InvRegistry.RegisterInterface(TypeInfo(WebServiceSoap), '', 'utf-8');
  InvRegistry.RegisterDefaultSOAPAction(TypeInfo(WebServiceSoap), '');
  <b>InvRegistry.RegisterInvokeOptions(TypeInfo(WebServiceSoap), ioDocument);</b>
  RemClassRegistry.RegisterXSClass(GetSendingsResult, '', 'GetSendingsResult');
  RemClassRegistry.RegisterXSClass(GetPartsResult, '', 'GetPartsResult');


Все должно работать.
avatar

admin

  • 19 января 2011, 16:03
+
+1
Премного благодарен! — Теперь всё работает :)
avatar

Jungle

  • 19 января 2011, 19:37

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.