- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为我尝试在 Python 中使用的 API 创建身份验证签名,我正在尝试的是,
1) 签名是通过使用 URI 的查询字符串部分的副本创建的,其示例如下所示。
?customerId=johns Trucks&userName=BobH&timeStamp=2014-05-01T11:00:00Z
2) 确保使用 UTF8 编码对私钥进行编码。编码后,您可以使用您的私钥创建签名
3) 将第2步创建的签名转换为base64。
4)如果我们使用fakekey的私钥,上面的URI字符串经过HMAC-SHA1计算并转换为base64后的签名将如下所示
PeKNVo1BAiuZyHxIdMisidG92bg=
5) 签名现在已准备好添加到请求的 Http 身份验证 header 中。
以上内容直接取自文档,以下是我的尝试,
private_key = bytes("auth", encoding='utf-8');
public_key = bytes("200000", encoding='utf-8');
customer_id = "HFH";
username = "API";
date_utc = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ")
message = bytes('?customerId=HFH&userName=API&timeStamp=' + date_utc, encoding='utf-8')
signature = base64.b64encode(hmac.new(private_key, message, digestmod=hashlib.sha1).digest())
encoded_sig = base64.b64encode(signature)
url = 'https://xxx.xxxxxxx.net/api/FleetVehicles?customerId=HFH&userName=API&timeStamp=' + date_utc;
data = requests.get(url, headers={'authorization:' + public_key + ":" + encoded_sig});
我的代码导致以下错误,
TypeError: Can't convert 'bytes' object to str implicitly
错误来 self 的代码示例的最后一行。
最佳答案
我想你的代码是 python 3。
从 Python 3 开始,字符串现在表示为 unicode 字符串或 二进制 数据,如所述 here
Python 3.0 uses the concepts of text and (binary) data instead of Unicode strings and 8-bit strings. All text is Unicode; however encoded Unicode is represented as binary data. The type used to hold text is str, the type used to hold data is bytes. The biggest difference with the 2.x situation is that any attempt to mix text and data in Python 3.0 raises TypeError, whereas if you were to mix Unicode and 8-bit strings in Python 2.x, it would work if the 8-bit string happened to contain only 7-bit (ASCII) bytes, but you would get UnicodeDecodeError if it contained non-ASCII values.
您想要的是:
headers={b'authorization:' + public_key + b":" + encoded_sig})
(请注意静态字符串之前的b
)
或者:
headers={'authorization:' + public_key.decode('utf-8') + ":" + encoded_sig.decode('utf-8')})
(注意 .decode()
将您的字节转换为str)
关于python - 类型错误 : Can't convert 'bytes' object to str implicitly - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41588847/
这是我的查询: INSERT INTO location_province(name, country) SELECT child.name ,location_country.id
尽管我看到 C++ 教程中广泛使用术语 implicit casting 来表示这样一个事实,即当您将某种类型分配给另一种类型时,类型的转换将自动(隐式)完成,但我经常听说应该叫implicit co
所有表格都在 utf_unicode_ci 中。 我这样做是为了检查 SELECT table_schema, table_name, column_name, character_set_name,
def MyFun(result: ListBuffer[(String, DateTime, List[(String, Int)])]): String = { val json = (r
我刚刚在 Postgres 中创建了一个表,并收到一条通知消息,我不完全理解隐式索引和序列。如有任何澄清,我们将不胜感激。 my_database=# CREATE TABLE sites my_da
我正在关注 Fernando Villalobos 的 React.js - A guide for Rails developers AirPair 教程。 这里的目标是使用 Rails 和 Rea
当我选择一个选项时,我有通过多选列表在 dbase 中搜索的代码我有这个错误: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (ut
我正在尝试使用 execl 调用来执行 kernel-space-driver (driver.c) 中的二进制文件此时(从第 850 行开始): if (!retval) {
我正在尝试在内核 3.13 上编译内核模块,但出现此错误: error: implicit declaration of function 'create_proc_read_entry' [-Wer
我检查了数据库表,发现它在 latin1_swedish_ci 中,所以我将其更改为 utf8_general_ci 然后我将排序规则从 latin1_swedish_ci 更改到所有字段的 utf8
尝试通过 MySQL 中的存储过程进行选择时出现以下错误 Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_ge
我收到了这个错误; Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT)
我需要您帮助确定为什么会出现此错误 Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT
我收到了这个错误; Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT)
MySql 上的错误信息: Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) fo
在我的删除服务器上执行 MySQL 中的存储过程时,如下所示: CREATE OR REPLACE PROCEDURE `SetNextPage`( IN `inRefNo` varchar(
我正在尝试为 Kali linux 2.0 安装我的 Alfa AWUS036ACH 适配器 我已经修复了之前的错误,但现在我被困在这里了。这是错误我正在接收。 os_dep/linux/rtw_an
我们正在使用以下存储过程,并且所有提到的表都使用“Collation = utf8_general_ci”,但我们仍然收到此错误: Error Code: 1267. Illegal mix of
我想让我的 User 表的 password 列在 mysql 中区分大小写。 表的说明如下: /*Table: mst_user*/ FIELD TYPE
我对这一切都很陌生,正在尝试在内核版本为 3.10.0-957.el7.x86_64 的虚拟机上编译程序。但我收到此错误: /home/../../../isr_demux.c: In functio
我是一名优秀的程序员,十分优秀!