如何通过SOAPPy(python)或SUD发送嵌套SOAP请求

2024-06-12 08:26:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试生成一个与此类似的soap请求:

我已经能够通过soappy访问服务器,但是我没有找到一个很好的示例来将nest xml参数传递给GetStopMonitoringService

我希望有人能提供一些信息/喜欢的例子。在

谢谢。在

我需要通过python生成一个soap请求示例:

    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:acsb="http://www.ifopt.org.uk/acsb" xmlns:datex2="http://datex2.eu/schema/1_0/1_0" xmlns:ifopt="http://www.ifopt.org.uk/ifopt" xmlns:siri="http://www.siri.org.uk/siri" xmlns:siriWS="http://new.webservice.namespace" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="./siri">
        <SOAP-ENV:Header />
        <SOAP-ENV:Body>
            <siriWS:GetStopMonitoringService>
                <Request xsi:type="siri:ServiceRequestStructure">
                    <siri:RequestTimestamp>2012-10-31T09:39:39.480+02:00</siri:RequestTimestamp>
                    <siri:RequestorRef xsi:type="siri:ParticipantRefStructure">KLM12345</siri:RequestorRef>
                    <siri:MessageIdentifier xsi:type="siri:MessageQualifierStructure">0100700:1351669188:4684</siri:MessageIdentifier>
                    <siri:StopMonitoringRequest version="IL2.6" xsi:type="siri:StopMonitoringRequestStructure">
                        <siri:RequestTimestamp>2012-10-31T09:39:39.480+02:00</siri:RequestTimestamp>
                        <siri:MessageIdentifier xsi:type="siri:MessageQualifierStructure">0</siri:MessageIdentifier>
                        <siri:PreviewInterval>PT1H</siri:PreviewInterval>
                        <siri:MonitoringRef xsi:type="siri:MonitoringRefStructure">39795</siri:MonitoringRef>
                        <siri:MaximumStopVisits>100</siri:MaximumStopVisits>
                    </siri:StopMonitoringRequest>
                </Request>
            </siriWS:GetStopMonitoringService>
        </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

我使用以下python代码:

^{pr2}$

但还是不行


Tags: orgenvhttpwwwtypesoapukxmlns
1条回答
网友
1楼 · 发布于 2024-06-12 08:26:11

我阅读源代码来解决这个问题。我建议你在遇到困难时也这样做!在

您的问题(对于SOAPpy)的基本答案是,您需要使用“structType”来创建嵌套。下面是一个示例代码片段,我在其中添加了一个soap头,在该头中我嵌套了一个“SessionHeader”节点,并在该节点中嵌套了一个“sessionId”节点。在

from SOAPpy import WSDL, Types as soapTypes
....
soapProxy = server.soapProxy._sa( "urn:sessionid" )
soapHeader = soapTypes.headerType()
soapHeader.SessionHeader = soapTypes.structType( None, "SessionHeader" )
soapHeader.SessionHeader.sessionId = soapTypes.stringType( sessionId )
soapProxy = soapProxy._hd( soapHeader )
server.soapproxy = soapProxy

它产生了这个SOAP(好吧,xml的头段):

^{pr2}$

同样的事情也可以用肥皂体来实现。在

请注意,在这里看到“SessionHeader”或“sessionid”的任何地方,这都是一个任意的定制。你想用什么名字都可以。在

相关问题 更多 >