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.

Relaterade artiklar