Байты и форматирование base64 (Python3) - PullRequest
0 голосов
/ 05 мая 2020

Мои навыки написания сценариев очень базовые c. Я пытаюсь адаптировать фрагмент Python 2, который я нашел здесь, к Python 3.

У меня проблемы с форматированием этой строки (я понимаю, что ему нужен байтовый объект, но не могу получить это работать).

headers["Authorization"] = "Basic {0}".format(
        base64.b64encode("{0}:{1}".format('auth', 'login')))

Полный фрагмент:

import base64, http.client

headers = {}
body = '/api/2.1/xml-in'
headers["Authorization"] = "Basic {0}".format(
        base64.b64encode("{0}:{1}".format('auth', 'login')))
headers["Content-type"] = "application/xml"

# the XML we ll send to Freshbooks
XML = """<?xml version="1.0" encoding="utf-8"?>
<request method="task.list">
    <page>1</page>
    <per_page>15</per_page>
</request>"""


# Enable the job
conn = http.client.HTTPSConnection('sample.freshbooks.com')
conn.request('POST', body, None, headers)
resp = conn.getresponse()
print(resp.status)
conn.send(XML)

print(resp.read())
conn.close()

Я пробовал следующее, но затем получаю сообщение об ошибке форматирования str:

headers["Authorization"] = "Basic {0}".format(
        base64.b64encode("%b:%b" % b'auth', b'login'))

Любая помощь будет очень признателен. Спасибо.

1 Ответ

0 голосов
/ 06 мая 2020

Это немного сложно, но работает следующее:

заголовки ["Authorization"] = "Basi c {0}". Format (base64.b64encode (("{0}: { 1} ". Format ('строка', 'строка'). Encode ('utf-8'))). Decode ())

...