我在java中使用NetBeans编写了一个简单的web服务,一个函数接受一个字符串数组。然后我用delphi写了一个web服务客户端并调用函数,服务器总是收到一个空数组。
当我使用soapUI 测试web 服务时,它运行正常。
我检查了delphi客户端发送的xml内容并与soapUI进行了比较。这是由delphi客户端发送的:
<?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>
<helloList xmlns="http://hw.xzq.com/">
<helloList>line 1</helloList>
</helloList>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
这是由 soapUI 发送的:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:hw="http://hw.xzq.com/">
<soapenv:Header/>
<soapenv:Body>
<hw:helloList>
<!--Zero or more repetitions:-->
<helloList>?</helloList>
</hw:helloList>
</soapenv:Body>
</soapenv:Envelope>
我将delphi客户端的xml内容复制到soapUI,服务器现在收到空数组。
我通过更改以下三行来修改 xml 内容:
<hw:helloList xmlns:hw="http://hw.xzq.com/">
<helloList>line 1</helloList>
</hw:helloList>
在此之后,服务器收到了我的字符串数组。
所以,我认为问题是delphi客户端发送没有前缀命名空间的数组内容。但是如何纠正呢?谢谢你的帮助!
顺便说一句,注释 InvRegistry.RegisterInvokeOptions(TypeInfo(HelloWorld), ioDocument); 没有帮助。