我正在使用Delphi XE2来创建webservice应用程序。但是我需要根据外部规范定义服务名称。
Delphi默认将“服务”添加到服务名称。有可能覆盖这个吗?
'service'在TWebServEx.GenerateWSDL方法中添加(Soap.WebServExp,第261行)。
您可以使用OnAfterPublishingWSDL
组件的TWSDLHTMLPublish
事件来更改服务名称:
procedure TMyWebModule.WSDLHTMLPublishAfterPublishingWSDL(const WSDLDoc: IWSDLDocument);
begin
WSDLDoc.Definition.Attributes[SName] := 'MyServiceName';
end;
很抱歉,你不能通过程序界面改变库的行为。它是在单元Soap.WSDLIntf(const SService = 'service';
)中硬编码的。如果你正在使用
procedure TMyWebModule.WSDLHTMLPublishAfterPublishingWSDL(const WSDLDoc: IWSDLDocument);
begin
WSDLDoc.Definition.Attributes[SName] := 'MyServiceName';
end;
您在XML标头中获取标签"name = MyServiceName"
,但导出服务名称仍将添加“service”。
解决方案是重建Delphi SOAP库。
SService = 'service';
部分的Soap.WSDLIntf行const
中查找。{$IFDEF TRUNCATE_WSDL_EXTERNAL_NAME }
SService = '';
{$ELSE }
"SService = 'service';
{$ENDIF }
Result := system.True;