Я пытался реализовать очень простой веб-сервис, работающий под OSX (и windows) с XE2, но кажется, что XML, который ADOM XML v4 генерирует / отображает для веб-сервиса, в некотором смысле недопустим.
Единственное очевидное отличие, которое я заметил по сравнению с тем, что генерируется с помощью MSXML, заключается в том, что кодировка, похоже, установлена на UTF-16LE независимо от того, что я пытаюсь изменить.
Кто-нибудь сталкивался с той же проблемой и знает, как ее исправить?
Обновление:
Самый простой способ воссоздать это - создать тривиальное «Серверное приложение SOAP» и изменить сгенерированный WebModuleUnit на следующее:
unit WebModuleUnit1;
interface
uses System.SysUtils, System.Classes, Web.HTTPApp, Soap.InvokeRegistry,
Soap.WSDLIntf, System.TypInfo, Soap.WebServExp, Soap.WSDLBind, Xml.XMLSchema,
Soap.WSDLPub, Soap.SOAPPasInv, Soap.SOAPHTTPPasInv, Soap.SOAPHTTPDisp,
Soap.WebBrokerSOAP, Xml.xmldom, Xml.adomxmldom;
type
TWebModule1 = class(TWebModule)
HTTPSoapDispatcher1: THTTPSoapDispatcher;
HTTPSoapPascalInvoker1: THTTPSoapPascalInvoker;
WSDLHTMLPublish1: TWSDLHTMLPublish;
procedure WebModule1DefaultHandlerAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
WebModuleClass: TComponentClass = TWebModule1;
implementation
{$R *.dfm}
procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
WSDLHTMLPublish1.ServiceInfo(Sender, Request, Response, Handled);
end;
initialization
DefaultDOMVendor := 'ADOM XML v4';
// DefaultDOMVendor := 'MSXML';
end.
При использовании DOMVendor 'MSXML' служба работает, но при использовании ADOM XML v4 она взрывается.
Добавил это в QC, пожалуйста, проголосуйте за это, если вы считаете, что веб-сервисы на OSX важны.
http://qc.embarcadero.com/wc/qcmain.aspx?d=99412