내 작업에 대한 내 질문에 대한 해결책을 찾았습니다. suds.plugin.MessagePlugin
구현을 사용하여 WebService 응답 페이로드를 저장하지 않고 비눗물이 DOM으로 파싱되는 것을 방지합니다. 내 원래의 질문에 항목 2 :
피할 실행 suds.sax.parser 및 전체 응답 트리를 포함한 DOM 객체를 구축하지 않는
다음
공개 웹 서비스와이 방법을 사용하는 예 .
는
gist
import suds
class PayloadInterceptor(suds.plugin.MessagePlugin):
def __init__(self, *args, **kwargs):
self.last_payload = None
def received(self, context):
#recieved xml as a string
print "%s bytes received" % len(context.reply)
self.last_payload = context.reply
#clean up reply to prevent parsing
context.reply = ""
return context
if __name__=='__main__':
wsurl = "http://webservices.oorsprong.org/websamples.countryinfo/CountryInfoService.wso?WSDL"
payload_interceptor = PayloadInterceptor()
client = suds.client.Client(wsurl, plugins=[payload_interceptor])
print client
res = client.service.CapitalCity("NL")
print "received %s bytes" % len(payload_interceptor.last_payload)
print "parsed result: %s" % res
print "response payload: %s" % payload_interceptor.last_payload
농산물 출력에 전체 코드를 참조하십시오
이
...
received 336 bytes
parsed result: None
response payload: <?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<m:CapitalCityResponse xmlns:m="http://www.oorsprong.org/websamples.countryinfo">
<m:CapitalCityResult>Amsterdam</m:CapitalCityResult>
</m:CapitalCityResponse>
</soap:Body>
</soap:Envelope>