Python请求在换行符的标题中提供无效的返回字符或前导空格

2024-04-20 12:28:47 发布

您现在位置:Python中文网/ 问答频道 /正文

Python 3.8.5请求2.22.0

我使用的API需要唯一的签名头格式

请注意,这是一个标题,其中还包括一个标题列表。 格式:

标题:X-Ca-Signature stringToSign=HTTPMethod+"\n"+ Headers+"\n"+API_URI+"\n"+FormattedQFStr;

我相信这可以解释为

GET
X-Ca-Key:ACCESSKEY
X-Ca_Nonce:UUID
X-Ca-Timestamp:UNIX_TIMESTAMP
api/open/v1/device/checkMac
mac=MACADDR

我尝试了以下三种方法来构造标题

stringToSign = str("GET" + "n\\" + "X-Ca-Key:" + ACCESSID + "n\\" + "X-Ca_Nonce:" + UUID + "n\\" + "X-Ca-Timestamp:" + MILLI_TIMESTAMP_STRIPPED + "n\\" + "api/open/v1/device/checkMac" + "n\\" + "mac=MACADDR")

stringToSign = str("GET" + os.linesep + "X-Ca-Key:" + ACCESSID + os.linesep + "X-Ca_Nonce:" + UUID + os.linesep + "X-Ca-Timestamp:" + MILLI_TIMESTAMP_STRIPPED + os.linesep + "api/open/v1/device/checkMac" + os.linesep + "mac=MACADDR")

stringToSign = str("GET" + "\n" + "X-Ca-Key:" + ACCESSID + "\n" + "X-Ca_Nonce:" + UUID + "\n" + "X-Ca-Timestamp:" + MILLI_TIMESTAMP_STRIPPED + "\n" + "api/open/v1/device/checkMac" + "\n" + "mac=MACADDR")

最后两个似乎为我提供了正确的格式:

GET
X-Ca-Key:ACCESSKEY
X-Ca_Nonce:UUID
X-Ca-Timestamp:UNIX_TIMESTAMP
api/open/v1/device/checkMac
mac=MACADDR

但应我的要求

payload = {'mac': MACADDR }
HEADERS = {"X-Ca-Key": ACCESSID, "X-Ca-Timestamp" : MILLI_TIMESTAMP_STRIPPED, "X-Ca-Nonce": UUID, "X-Ca-Signature": stringToSign,}
response = requests.get(URL_ARRAY[3], headers=HEADERS, params=payload)

请求根本不喜欢换行符,给了我 requests.exceptions.InvalidHeader:标头中的返回字符或前导空格无效:X-Ca-Signature

非常感谢您给我的任何建议,让我朝着正确的方向前进


Tags: keyapigetuuiddevicemacopentimestamp