Zeep behöver proxyn innan den läser WSDL:en
Skapa Requests-sessionen och Zeep Transport innan du bygger en Client från en fjärr-WSDL.
Att bygga en Zeep Client från en fjärr-WSDL kan hämta dokumentet och dess imports direkt. Konfigurera Transport först i stället för att sätta en proxy efter att Client redan försökt läsa in tjänstebeskrivningen.
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 är tjänstebeskrivningens faktiska URL. Om tjänsten och dess imports är offentligt tillgängliga och offentliga proxyservrar är tillåtna, ger HTTP-proxylistan kandidater för sessionens proxy-URL:er. Håll den konfigurerade sessionen vid liv för efterföljande SOAP-operationer och stäng den när arbetet är klart.
Transport.timeout styr inläsningen av WSDL och XSD. operation_timeout styr HTTP-förfrågningar för tjänsteoperationer. En metadatatimeout under bygget av Client är därför ett annat steg än ett metodanrop som tar timeout senare.
I det här exemplet är Requests miljöintegrering fortfarande aktiv. Om miljöns proxyvärden krockar med en uttryckligen krävd rutt använder du session.trust_env=False och anger nödvändigt CA-paket och autentiseringsinställningar uttryckligen.
Kontrollera URL:en för det importerade dokumentet när initieringen fortfarande misslyckas. En WSDL på toppnivå kan läsas in framgångsrikt medan ett importerat schema använder ett annat värdnamn eller målprotokoll.