ProxyAgent מתחבר דרך ה-endpoint שסופק לו. לבקשת HTTP פשוטה ולפרוקסי שמקבל אימות בסיסי, שימו את פרטי הכניסה של הפרוקסי בכותרת ה-Proxy-Authorization של אותה בקשה.

import base64
from twisted.internet.endpoints import TCP4ClientEndpoint
from twisted.web.client import ProxyAgent
from twisted.web.http_headers import Headers

endpoint = TCP4ClientEndpoint(reactor, 'proxy.example', 8080,
                              timeout=5)
agent = ProxyAgent(endpoint, reactor=reactor)
token = base64.b64encode(b'alice:REPLACE_WITH_PROXY_PASSWORD')
headers = Headers({b'Proxy-Authorization': [b'Basic ' + token]})
pending = agent.request(b'GET', b'http://example.com/', headers)

הקטע הזה מניח שלאפליקציה כבר יש reactor משלה. השיטה, ה-URI ונתוני הכותרת המוצגים משתמשים בבייטים. שמרו את פרטי הכניסה האמיתיים במקור פרטי הכניסה של האפליקציה; ממלא המקום רק מראה כיצד נבנית הכותרת. Base64 הוא קידוד, ולכן הסודיות תלויה בחיבור שנושא אותו.

ה-Deferred המוחזר מניב אובייקט תגובה. קבלת האובייקט הזה אינה אוספת את גוף התגובה; קראו אותו דרך ממשק קריאת הגוף המתועד וטפלו בכשלים א-סינכרוניים. ה-timeout של ה-endpoint מגביל את הקמת החיבור, לא את מחזור החיים המלא של התגובה.

הדוגמה משתמשת במכוון ביעד HTTP. היא אינה מוסיפה משא ומתן CONNECT עבור HTTPS רק על ידי שינוי סכימת ה-URI.

מאמרים קשורים