Zeep potřebuje proxy dřív, než přečte WSDL
Vytvořte relaci Requests a Zeep Transport dříve, než sestavíte Client ze vzdáleného WSDL.
Sestavení Zeep Client ze vzdáleného WSDL může okamžitě stáhnout tento dokument a jeho importy. Nakonfigurujte Transport nejprve, místo abyste proxy nastavovali poté, co se Client už pokusil načíst popis služby.
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 je skutečná URL popisu služby. Pokud je tato služba a její importy veřejně dostupné a veřejné proxy jsou povoleny, seznam HTTP proxy poskytuje kandidáty pro proxy URL relace. Udržujte nakonfigurovanou relaci aktivní pro následné operace SOAP a po skončení této práce ji zavřete.
Transport.timeout řídí načítání WSDL a XSD. operation_timeout řídí HTTP požadavky pro operace služby. Časový limit metadat během sestavování Client je proto jiná fáze než pozdější časový limit volání metody.
V tomto příkladu zůstává integrace s prostředím Requests aktivní. Pokud hodnoty proxy z prostředí kolidují s výslovně požadovanou trasou, použijte session.trust_env=False a výslovně zadejte potřebný CA balíček a nastavení ověřování.
Zkontrolujte URL importovaného dokumentu, pokud inicializace stále selhává. Nejvyšší WSDL se může načíst úspěšně, zatímco importované schéma používá jiné jméno hostitele nebo cílový protokol.