Преобразование из команды curl в код Python с использованием pycurl и запрос не работает - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть эта команда curl, которую я хочу ввести в код Python command = 'curl -k -u test: 123 -H "Тип контента: application / json" --digest "https://192.168.0.10/restapi/config/minutes/"'

Команда отлично работает в терминале

Я пробовал два метода с использованием Pycurl и запросов. Очевидно, ни один из них не работает. Позвольте мне поделиться далее по этому вопросу:

Подход Pycurl:

import pycurl
from io import StringIO
buffer = StringIO()
url = "https://192.168.0.10/restapi/config/minutes/"
curl = pycurl.Curl()
curl.setopt(pycurl.URL, url)
curl.setopt(pycurl.SSL_VERIFYPEER, False)
curl.setopt(pycurl.USERPWD, 'test:123')
curl.setopt(pycurl.HTTPHEADER, ['Content-Type: application/json'])
curl.setopt(pycurl.VERBOSE, 1)
curl.perform()
resp = buffer.getvalue()

Я получаю пустую строку в качестве вывода

Подход запросов:

  import requests
headers = {
    'Content-Type': 'application/json',
}

    response = requests.get(url, headers=headers, verify=False, auth=('test', '123'))

Я получаю "Response [401]"

где я иду не так? Iзнать, что подпроцесс не является рекомендуемым вариантом, но это единственный метод, который работает:

p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
...