我正在使用Delphi 10.2.3来使用SOAP Web服务。我的问题是Web服务答复未分配给使用WSDLImp.exe
生成的wsdl中定义的响应类。
我看到原始响应XML包含其中的所有信息,如下所示:
HTTP/1.1 200
X-HP-CAM-COLOR: V=1;ServerAddr=5F+cgNOCZPdfvCQ4naSfjw==;GUID=1|xpjJ6o0v_kd3rKz0c1ASIUXW--xZpHqeH8lJ3S2l30SxOi2DzpzfGfLpdqdxt0lg|L2VhcnNpdi93cy9FYXJzaXZXZWJTZXJ2aWNl
Content-Type: text/xml;charset=utf-8
Transfer-Encoding: chunked
Date: Wed, 24 Oct 2018 15:54:46 GMT
Server: EARSIV
Strict-Transport-Security: max-age=157680000
Set-Cookie: cookiesession1=1BEDB4A4PX73WJCTCIRPOUP46FNNFC28;Path=/;HttpOnly
1da
<?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:faturaOlusturResponse xmlns:ns2="http://service.earsiv.uut.cs.com.tr/"><return xmlns=""><resultCode>AE00067</resultCode><resultExtra></resultExtra><resultText>Web servis çağrısı "input" alanından gerekli bilgiler elde edilemedi. Eksik alanlar: null bu alan(lar)ın boş olmadığından emin olunuz!</resultText></return></ns2:faturaOlusturResponse></S:Body></S:Envelope>
0
我在调试时看到的return
中的 faturaOlusturResponse
是nil
。尝试访问return.resultCode
会导致访问冲突。
您所看到的是正确的,即在行XML开头之前和之后都有垃圾字符。我怀疑这可能是原因。
但是;
1-我发现Fiddler解析并显示带有所有正确信息的格式化XML视图没有问题。
2-我尝试使用OnAfterExecute()
的{{1}}事件。我看到THTTPRIO
是474,等于上面的原始响应中的XML行长。
我想不出什么问题,也无法解决。互联网搜索没有帮助。
感谢您的帮助。
谢谢。
WSDL URL:https://earsiv.efinans.com.tr/earsiv/ws/EarsivWebService?wsdl
编辑:
使用下面的SOAPResponse.Size
函数可以使用网络服务方法。有AFaturaOlustur()
程序需要另一个单位代码。我没有将它们全部都包括在内,因此在此处并未发布很多代码。 Json例程来自mORMot框架。在代码的某些部分中也使用了一些常量。运行功能后,当我读取用SetSecurityHeader()
过程编写的文件response.xml
时,将显示完整的xml。它与上面原始响应中的相同:
HTTPRIO1AfterExecute()