关于urllib.parse.quote报TypeError: quote_from_bytes() expected bytes的求助
解决TypeError: quote_from_bytes() expected bytes的问题
这个错误的根源很明确:urllib.parse.quote()函数只接受字符串或字节类型的输入,但你传入的params字典里有好几个整数类型的值(比如debitAccountNumber、amount这些)。当函数尝试处理非字符串的参数时,会默认试图将其转为字节,这就触发了TypeError。
这里有两种简单的修复方案,你可以根据自己的场景选择:
方案1:传入参数时统一转成字符串
直接修改你的参数字典,把所有数值类型的值改成字符串格式:
Make_Payment_params = { "debitAccountNumber": "12003189487", "creditAccountNumber": "12065812627", "amount": "100", "requestedExecutionDate": "2019-03-09" }
方案2:在处理函数内部统一转换
如果你不想修改原始参数,可以在循环处理的时候,先把参数值转成字符串再传给quote():
修改__to_canonical_querystring_post方法里的拼接行:
canonical_querystring += param_key + "=" + urllib.parse.quote(str(param_value))
这样修改后,函数会自动把所有参数值转为字符串,再进行URL编码,就能正常生成符合要求的canonical querystring了。测试一下的话,最终生成的字符串应该是(按键字母排序):amount=100&creditAccountNumber=12065812627&debitAccountNumber=12003189487&requestedExecutionDate=2019-03-09
内容的提问来源于stack exchange,提问作者jameson
相关产品推荐
相关产品推荐

