Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / soapAction WSDL / 12 сообщений из 12, страница 1 из 1
08.10.2019, 08:31
    #39873128
Den94
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
soapAction WSDL
Доброго времени суток!
Имею проблему написать soap-сервис по уже предоставленной wsdl. Сам сервис описан, но его описание не совпадает с предоставленным. Основная проблема с описанием soapAction, в дельфовой wsdl он выглядит как
...
Рейтинг: 0 / 0
08.10.2019, 08:33
    #39873129
Den94
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
soapAction WSDL
<operation name="sendResponse">
<operation xmlns=" http://schemas.xmlsoap.org/wsdl/soap/" soapAction="urn:HIVRegistryIntf-Callback#sendResponse" style="rpc"/>
....
</operation>

а надо

<operation name="sendResponse">
<operation xmlns=" http://schemas.xmlsoap.org/wsdl/soap/" soapAction="sendResponse" style="rpc"/>
....
</operation>

можно поменять в OnAfterPublishingWSDL на нужное, но тогда при обращении к серверу выходит ошибка unknown soap action.
Как сделать описание нужным и работающим?
...
Рейтинг: 0 / 0
08.10.2019, 12:07
    #39873249
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
soapAction WSDL
Вы использовали встроенный в Delphi WSDLImporter и он неверно сгенерировал Action?
...
Рейтинг: 0 / 0
08.10.2019, 12:23
    #39873262
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
soapAction WSDL
АА.. вы делаете сервер, но подгоняете под готовую wsdl? какой ужас...
Попробуйте
InvRegistry.RegisterDefaultSOAPAction(TypeInfo(IAAA), 'zzz');

но он выставит его для всех операций
...
Рейтинг: 0 / 0
08.10.2019, 12:32
    #39873275
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
soapAction WSDL
Еще можно вот так, для каждой операции задать свой..
Код: pascal
1.
InvRegistry.RegisterAllSOAPActions(TypeInfo(IAAA), '|MyAction1|MyAction2|MyAction3|MyAction4');
...
Рейтинг: 0 / 0
08.10.2019, 12:41
    #39873294
Den94
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
soapAction WSDL
X-Cite,

Спасибо за ответ. Но не помогло, изменений в wsdl нет
...
Рейтинг: 0 / 0
08.10.2019, 12:56
    #39873310
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
soapAction WSDL
Покажите код региастрации сервиса
и приложите wsdl что-ли
...
Рейтинг: 0 / 0
08.10.2019, 13:14
    #39873324
Den94
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
soapAction WSDL
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
  TCallback = class(TInvokableClass, Callback)
  public
    function sendResponse(const id: string; const oid: string; const response: string): Status; stdcall;
  end;

 TSOAPCredentials = class(TSoapHeader)
 private
   fMessageID:string;
 public
   constructor Create; overload; override;
   constructor Create(AMessageID:string);  overload;

   function ObjectToSOAP(RootNode, ParentNode: IXMLNode;
                            const ObjConverter: IObjConverter;
                            const NodeName, NodeNamespace, ChildNamespace: InvString; ObjConvOpts: TObjectConvertOptions;
                            out RefID: InvString): IXMLNode; override;
 end;


.....
Код: pascal
1.
2.
3.
4.
5.
 
initialization
  InvRegistry.RegisterInvokableClass(TCallback);
  InvRegistry.RegisterHeaderClass(TypeInfo(TCallback), TSOAPCredentials);
  InvRegistry.RegisterDefaultSOAPAction(TypeInfo(TCallback), 'sendResponse');


сам wsdl висит на http://92.255.206.241:8100/wsdl/Callback
...
Рейтинг: 0 / 0
08.10.2019, 15:30
    #39873437
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
soapAction WSDL
Den94,

InvRegistry.RegisterDefaultSOAPAction нужен TypeInfo интерфейса а не класса.
Какой интерфейс у вас отвечает за сервис, тот и нужно указать
...
Рейтинг: 0 / 0
08.10.2019, 15:43
    #39873451
Den94
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
soapAction WSDL
X-CiteDen94,

InvRegistry.RegisterDefaultSOAPAction нужен TypeInfo интерфейса а не класса.
Какой интерфейс у вас отвечает за сервис, тот и нужно указать

Заработало вроде как, спасибо. Не подскажите какие-нибудь ресурсы по теме? Ато гугл упорно не хочет открывать мне этих секретов
...
Рейтинг: 0 / 0
08.10.2019, 16:14
    #39873474
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
soapAction WSDL
Den94X-CiteDen94,

InvRegistry.RegisterDefaultSOAPAction нужен TypeInfo интерфейса а не класса.
Какой интерфейс у вас отвечает за сервис, тот и нужно указать

Заработало вроде как, спасибо. Не подскажите какие-нибудь ресурсы по теме? Ато гугл упорно не хочет открывать мне этих секретов

Метод самотыка и исследования исходников.
Например до сегодняшнего дня я понятия не имел о RegisterDefaultSOAPAction или RegisterAllSOAPActions.
Просто набрал InvRegistry. и в подсказке по логике подобрал что-нибудь похожее...
Потом по исходникам поискал # и посмотрел что происходит...

К сожалению справка и примеры по Delphi убогие на столько что отбивает желание у всех что-то пробовать...
...
Рейтинг: 0 / 0
08.10.2019, 17:01
    #39873509
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
soapAction WSDL
X-CiteМетод самотыка

интересно ....
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / soapAction WSDL / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]