调用 Web 服务并在 Delphi 7 中出现 Return 错误

Call Web Service and Return Error in Delphi 7

我在 Delphi 7 中导入了一个 WSDL 并在其上调用了一个函数,然后将显示一条错误消息:

项目 Project1.exe 引发异常 class ERemotableException,消息为“服务器无法处理请求。 ---> 一个或多个实体的验证失败。有关详细信息,请参阅 'EntityValidationErrors' 属性。'。进程停止。使用步骤或 运行 继续。

当我调用 WebService 方法(in Delphi 7)时,使用 Fiddler 软件我得到了消息内容(XML):

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><NS1:Save xmlns:NS1="http://tempuri.org/"><from xsi:type="xsd:string">1</from><to xsi:type="xsd:string">2</to><body xsi:type="xsd:string">ServiceTest</body></NS1:Save></SOAP-ENV:Body></SOAP-ENV:Envelope>

然后我在 Delphi XE5 中调用相同的方法和 Web 服务,没有错误,这个 XML 内容:

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Body><Save xmlns="http://tempuri.org/"><from>1</from><to>2</to><body>ServiceTest</body></Save></SOAP-ENV:Body></SOAP-ENV:Envelope>

SOAP 服务器响应:

在 .NET 框架中编写的 SOAP Web 服务并支持 SOAP 1.1 和 1.2

有什么想法吗?

我已使用 THTTPRIO.OnBeforeExecute 进行更改 SOAPResponse.Then 删除不必要的属性并再次输入 XML 源和打包并将其分配给 SOAPResponse 并发送。

用这个方法解决了问题。