سؤال

في بيثون 2، كان من الممكن الحصول على مخرجات التصحيح من Urllib من خلال القيام به

import httplib
import urllib
httplib.HTTPConnection.debuglevel = 1
response = urllib.urlopen('http://example.com').read()

ومع ذلك، في بيثون 3 يبدو أنه تم نقل هذا إلى

http.client.HTTPConnection.set_debuglevel(level)

ومع ذلك، أنا أستخدم Urllib not http.client مباشرة. كيف يمكنني إعداده حتى يتم عرض طلب HTTP الخاص بي معلومات تصحيح الأخطاء بهذه الطريقة؟

إليك ما أستخدمه حتى الآن. ما هي أفضل طريقة للمضي قدما إذا كنت أريد أن أكون قادرا على الحصول على معلومات التصحيح؟

#Request Login page
cookiejar = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookiejar))
request = urllib.request.Request(options.uri)
add_std_headers(request)
response = opener.open(request)
response_string = response.read().decode("utf8")
# ...
هل كانت مفيدة؟

المحلول

كنت الحق في المرة الأولى. يمكنك ببساطة إضافة الخط http.client.HTTPConnection.debuglevel = 1 في بداية ملفك لتشغيل تطبيق تصحيح الأخطاء HTTP. urllib.request لا يزال يستخدم http.client.

يبدو أن هناك أيضا طريقة لتعيين debuglevel لمعالج واحد (عن طريق إنشاء urllib.request.HTTPHandler(debuglevel=1) وبناء فتاحة مع ذلك)، ولكن على تركيب Python3 (3.0b3) لم يتم تنفيذها بالفعل. أتصور أن هذا تغير في الإصدارات الحديثة!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top