Een Zeep Client bouwen uit een externe WSDL kan dat document en de imports ervan meteen ophalen. Configureer eerst het transport, in plaats van een proxy te zetten nadat Client al heeft geprobeerd de servicedefinitie te laden.

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 is de werkelijke URL van de servicedefinitie. Als die service en de imports ervan openbaar bereikbaar zijn en openbare proxy's zijn toegestaan, levert de HTTP-proxylijst kandidaten voor de proxy-URL's van de sessie. Houd de geconfigureerde sessie in leven voor volgende SOAP-bewerkingen en sluit deze wanneer dat werk klaar is.

Transport.timeout beheert het laden van WSDL en XSD. operation_timeout beheert HTTP-verzoeken voor servicebewerkingen. Een metadata-time-out tijdens het bouwen van Client is dus een andere fase dan een methodeaanroep die later verloopt.

In dit voorbeeld blijft de omgevingsintegratie van Requests actief. Als proxywaarden uit de omgeving botsen met een expliciet vereiste route, gebruik dan session.trust_env=False en geef de benodigde CA-bundel en verificatie-instellingen expliciet op.

Controleer de URL van het geïmporteerde document wanneer initialisatie nog steeds mislukt. Een WSDL op het hoogste niveau kan met succes laden terwijl een geïmporteerd schema een andere hostnaam of een ander bestemmingsprotocol gebruikt.

Gerelateerde artikelen