我一直在尝试使用 XE2 在 OSX(和 Windows)下实现一个非常简单的 Web 服务,但似乎“ADOM XML v4”为 Web 服务生成/呈现的 XML 在某种程度上是无效的。
与使用“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' 它会崩溃。
如果您觉得 OSX 上的 Web 服务很重要,请将此添加到 QC 中。 http://qc.embarcadero.com/wc/qcmain.aspx?d=99412