Zeep کو WSDL پڑھنے سے پہلے پروکسی درکار ہے
دور دراز WSDL سے Client بنانے سے پہلے Requests سیشن اور Zeep Transport بنائیں۔
دور دراز WSDL سے Zeep Client بنانے پر وہ دستاویز اور اس کے import فوراً آ سکتے ہیں۔ Client کے سروس کی تفصیل لوڈ کرنے کی کوشش کرنے کے بعد پروکسی مقرر کرنے کی بجائے پہلے Transport تشکیل دیں۔
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 سروس کی تفصیل کا اصل URL ہے۔ اگر وہ سروس اور اس کے import عوامی طور پر قابلِ رسائی ہوں اور عوامی پروکسی کی اجازت ہو تو HTTP پروکسی فہرست سیشن کے پروکسی URL کے لیے امیدوار فراہم کرتی ہے۔ تشکیل شدہ سیشن کو اگلے SOAP عملیات کے لیے زندہ رکھیں، پھر وہ کام ختم ہونے پر اسے بند کر دیں۔
Transport.timeout WSDL اور XSD کے لوڈ ہونے کو کنٹرول کرتا ہے۔ operation_timeout سروس کے عملیات کے لیے کی جانے والی HTTP درخواستوں کو کنٹرول کرتا ہے۔ اس لیے Client بناتے وقت میٹاڈیٹا کا ٹائم آؤٹ بعد میں ہونے والے میتھڈ کال ٹائم آؤٹ سے مختلف مرحلہ ہے۔
اس مثال میں Requests کا ماحول کے ساتھ انضمام فعال رہتا ہے۔ اگر ماحول کی پروکسی قدریں واضح طور پر درکار راستے سے متصادم ہوں تو session.trust_env=False استعمال کریں اور مطلوبہ CA بنڈل اور توثیق کی ترتیبات واضح طور پر فراہم کریں۔
اگر ابتدا اب بھی ناکام ہو تو import شدہ دستاویز کا URL جانچیں۔ اعلیٰ سطحی WSDL کامیابی سے لوڈ ہو سکتا ہے جبکہ import شدہ schema کوئی دوسرا hostname یا منزل protocol استعمال کرتا ہو۔