Я понимаю, что это старый, но я решил добавить решение, если вы используете Python 3 с httplib2, так как я не смог найти его где-либо еще.Я также проверяю подлинность на сервере Jenkins, используя маркер API для каждого пользователя Jenkins.Если вас не интересует Jenkins, просто замените действительный пароль пользователя на токен API.
b64encode ожидает двоичную строку символов ASCII.В Python 3 ошибка TypeError будет вызываться, если передается простая строка. Чтобы обойти это, часть заголовка «user: api_token» должна быть закодирована с использованием «ascii» или «utf-8», переданного в b64encode,затем результирующая строка байтов должна быть декодирована в обычную строку перед помещением в заголовок.Следующий код сделал то, что мне было нужно:
import httplib2, base64
cred = base64.b64encode("{0}:{1}".format(
<user>, <api_token>).encode('utf-8')).decode()
headers = {'Authorization': "Basic %s" % cred}
h = httplib2.Http('.cache')
response, content = h.request("http://my.jenkins.server/job/my_job/enable",
"GET", headers=headers)