我必须在python中向休息服务器发帖。在头认证中,我必须包含base64编码的字符串。
我使用base64模块:
import base64
#node here is '3180' but I also tried with text
node = base64.b64encode(node.encode('utf-8'))
node = 'Basic ' + str(node)
headers = {'Content-type': 'application/json', 'Authentication': node}
print(headers)
我得到的印刷品是:
{'Authentication': "Basic b'MzE4MA=='", 'Content-type': 'application/json'}
其中b' ... '
添加到节点base64字符串。有没有办法避免出现这些字符?我不知道它们是出现在打印件上还是发送到服务器上。
答案 0 :(得分:3)
b64encode
正在返回bytes
而不是str
。当你在没有指定编码的情况下调用str()
时,它不是转换值,而是实际上为你提供了b'MzE4MA=='
字节对象的Python表示。
为避免这种情况,请使用node = 'Basic ' + node.decode('ascii')
请注意,您也可以使用str(node, encoding='ascii')
,但这会更长。