HTTPS GET с базовой аутентификацией c с использованием встроенной библиотеки python, такой как urllib, вместо использования сторонней библиотеки, такой как запросы - PullRequest
0 голосов
/ 16 апреля 2020

Используя модуль python запросов, очень просто "https получить с базовой аутентификацией c". Этот код работает нормально.

import requests
response = requests.get(url,verify=False,auth=(username, pwd))
print(response.json())

Но моя задача - добиться этого, используя встроенный модуль python, такой как urllib, http.client. Я попытался использовать urllib

import urllib.request
import ssl
verify_ssl = False
passman = urllib.request.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url_no_usrpwd, uname, pwd)
authhandler = urllib.request.HTTPBasicAuthHandler(passman)
if verify_ssl:
    opener = urllib.request.build_opener(authhandler)
else:
    context = ssl.create_default_context()
    context.check_hostname = False
    context.verify_mode = ssl.CERT_NONE
    opener = urllib.request.build_opener(authhandler, urllib.request.HTTPSHandler(context=context))
urllib.request.install_opener(opener)
res = urllib.request.urlopen(url_no_usrpwd)
print(res.read().decode('utf-8'))

Сначала я решил проблему CERTIFICATE_VERIFY_FAILED. Теперь я получаю эту ошибку "urllib.error.HTTPError: Ошибка HTTP 406: неприемлемо".

Эта проблема очень распространена. Но я много пробовал. Наконец, я решил спросить. Пожалуйста, помогите!

Вопрос: Как заставить https получить вызов по запросу (требуются учетные данные), используя встроенную библиотеку python, такую ​​как urllib.

...