2017-02-15 6 views
0

Я использую этот код для кодирования имени пользователя и пароля и помещаю его в заголовки.Python: кодировать строку base64, чтобы поместить ее в заголовки

def login_as_user(self,user): 
    encode_login = base64.b64encode(bytes(str(user['email'] + ":" +user['password']),'utf8')) 
    headers = { Config.API_AUTHORIZATION:"Basic "+str(encode_login)} 
    response = requests.requestd("POST", self.url_path , data="", headers=headers) 
    return response 

С

user_name = [email protected] и пароль = 1.

Когда я преобразовал encode_login к Силе, выход всегда b'dGVzdEB0ZXN0LmNvbTox», то при преобразовании в строку он включает b '. Это делает мои заголовки, когда запрос неверен.

Пожалуйста, помогите, как я могу это решить? Благодарю.

ответ

2

Вы можете просто декодировать свои данные до UTF8 с помощью decode().

Например, если ваша переменная:

a = b'dGVzdEB0ZXN0LmNvbTox' 
# Or: 
# a = a.decode('UTF8') 
a = a.decode() 
print(a) 

Выход:

>> 'dGVzdEB0ZXN0LmNvbTox' 

В противном случае, это будет печатать:

base64.b64encode(bytes("hello", 'utf8')).decode() 
>>> 'aGVsbG8=' 

Итак, в вашем вопросе, вы только для изменения этой строки:

headers = { Config.API_AUTHORIZATION:"Basic " + str(encode_login)} 

By:

headers = { Config.API_AUTHORIZATION:"Basic " + encode_login.decode()} 
+0

Спасибо Chiheb, но encode_login является байтами, а не улица, то это не есть делает FUNC, как закодировать(). – scorpion

+1

Вы должны вызвать '.decode()', а не '.encode()'. – kennytm

+0

@kennytm Спасибо! это была опечатка ошибка поздно в эту ночь. –

 Смежные вопросы

  • Нет связанных вопросов^_^