تقنية

putrequest في بايثون: هل أُرسل طلب HTTP؟

عدد إرسالنا صفر والمقبس None
قبل إنهاء الرؤوس. [1] [2]

نفحص HTTPConnection.putrequest قبل إنهاء الرؤوس. [1] [2]

الخلاصة السريعة

لا؛ الطلب بقي في المخزن هنا. [1] [2]

  • ننشئ كائنًا جديدًا لعنوان مؤلف. [1] [2]
  • نستدعي putrequest دون endheaders. [1] [2]
  • يبقى sock بقيمة None. [1] [2]
  • يرفع getresponse الاستثناء المحلي ResponseNotReady. [1] [2]
  • اختبرنا 3.12.14 دون شبكة أو استجابة خادم. [1] [2]

المثال

import http.client as h
c=h.HTTPConnection('own.invalid')
c.putrequest('GET','/own')
print(c.sock is None)
try:c.getresponse()
except h.ResponseNotReady:
 print('not sent')
finally:c.close()

[1] [2]

المخرجان True ثم not sent. [1] [2]

التجهيز والإرسال

الاستدعاء يضيف السطر والرؤوس إلى مخزن في نسختنا. تمر عملية الإرسال عبر endheaders؛ لم نستدعها في المثال. عداد send بقي صفرًا. [1] [2]

خطأ محلي ResponseNotReady دون كائن استجابة
طلب استجابة مبكر. [1] [2]

من رفع الخطأ؟

شرط الحالة داخل getresponse يرفض الطلب غير المرسل قبل إنشاء كائن استجابة. الخطأ محلي؛ لا يصف رد خادم أو فشل شبكة. [1] [2]

المراجع

  1. Python: http.client
  2. CPython 3.12.14: http/client.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.