Zeep har brug for proxyen, før den læser WSDL'en
Opret Requests-sessionen og Zeep Transport, før du bygger en Client ud fra en ekstern WSDL.
Når du bygger en Zeep Client ud fra en ekstern WSDL, kan den straks hente dokumentet og dets imports. Konfigurer transporten først i stedet for at sætte en proxy, efter at Client allerede har forsøgt at indlæse 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 til tjenestebeskrivelsen. Hvis tjenesten og dens imports er offentligt tilgængelige, og offentlige proxies er tilladt, giver HTTP-proxylisten kandidater til sessionens proxy-URL'er. Hold den konfigurerede session i live til efterfølgende SOAP-operationer, og luk den, når arbejdet er slut.
Transport.timeout styrer indlæsning af WSDL og XSD. operation_timeout styrer HTTP-anmodninger for tjenesteoperationer. En metadata-timeout under opbygningen af Client er derfor en anden fase end et metodekald, der timer ud senere.
Requests' miljøintegration er stadig aktiv i dette eksempel. Hvis miljøets proxyværdier er i konflikt med en eksplicit krævet rute, skal du bruge session.trust_env=False og angive den nødvendige CA-bundle og godkendelsesindstillinger eksplicit.
Kontroller den importerede dokuments URL, når initialiseringen stadig mislykkes. En WSDL på topniveau kan indlæses, mens et importeret skema bruger et andet værtsnavn eller destinationsprotokol.