2017-02-15 4 views
0

私はこのコードを使用してuser_nameとpasswordをエンコードし、ヘッダに入れます。Python:base64の文字列をエンコードしてヘッダに入れます

USER_NAME = [email protected]とパスワードで

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 

= 1

私はをstrにする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)} 

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

おかげChiheb、しかしencode_loginはバイトではなくSTRあり、それは)をコード(FUNC等を有していdoest。 – scorpion

+1

'.encode()'ではなく '.decode()'を呼び出すべきです。 – kennytm

+0

@kennytmありがとう!この夜遅くに誤植でした。 –

関連する問題