Zeep trenger proxyen før den leser WSDL-en
Opprett Requests-økten og Zeep Transport før du bygger en Client fra en ekstern WSDL.
Å bygge en Zeep Client fra en ekstern WSDL kan hente dokumentet og importene umiddelbart. Konfigurer Transport først i stedet for å sette en proxy etter at Client allerede har forsøkt å laste tjenestebeskrivelsen.
from requests import Session
from zeep import Client
from zeep.transports import Transport
session = Session()
session.proxies.update({
"http": "http://proxy.example.net:8080",
"https": "http://proxy.example.net:8080",
})
transport = Transport(
session=session,
timeout=10,
operation_timeout=30,
)
client = Client(wsdl_url, transport=transport)
wsdl_url er den faktiske URL-en til tjenestebeskrivelsen. Hvis tjenesten og importene er offentlig tilgjengelige og offentlige proxyer er tillatt, gir HTTP-proxylisten kandidater for øktens proxy-URL-er. Hold den konfigurerte økten i live for senere SOAP-operasjoner, og lukk den når arbeidet er ferdig.
Transport.timeout styrer lasting av WSDL og XSD. operation_timeout styrer HTTP-forespørsler for tjenesteoperasjoner. En metadatatidsavbrudd under bygging av Client er derfor et annet trinn enn et metodekall som timer ut senere.
I dette eksempelet forblir miljøintegrasjonen til Requests aktiv. Hvis miljøets proxyverdier er i konflikt med en eksplisitt påkrevd rute, bruk session.trust_env=False og oppgi nødvendig CA-bunt og autentiseringsinnstillinger eksplisitt.
Sjekk URL-en til det importerte dokumentet når initialiseringen fortsatt mislykkes. En WSDL på toppnivå kan lastes, mens et importert skjema bruker et annet vertsnavn eller en annen målprotokoll.