Postman调用指定URL的GET API遇401错误的解决方法及Python调用方案
问题描述
我想用Postman调用Wemix的API获取内部交易数据,预期返回结果如下:
{ "status": "200", "message": "success", "results": { "count": "6816", "data": [ { "timestamp": "2022-07-17T10:47:03Z", "sender": "0x2F664960a7FBdaDA8e133DbAF1Bfc27DCCBADBfb", "receiver": "0xA68A135Ccd37E720000fC30CFcc453b15F8040df", "value": "0", "status": "1", "message": "", "transaction_hash": "0x1a03528eecf165678d7fbcb9ceeee45a98b02f10a5ce30236ef29ee5b3747c84", "block_number": "2472", "contract_address": null, "trace_address": [ "0", "1", "1" ], "trace_type": "staticcall", "sub_traces": null, "transaction_index": "0", "gas_used": "2715", "gas_limit": "29039032", "external_receiver": "0", "input": "0x0d2020dd476f7665726e616e6365436f6e74726163740000000000000000000000000000" }, ... ] } }
我调用的GET API地址为:
GET https://explorerapi.test.wemix.com/v1/accounts/0xA68A135Ccd37E720000fC30CFcc453b15F8040df/internal-transactions
携带的API Key为:1ba5e446edf1997f67b51bf9e60b3fbba6fa1bf84301115292805d7e24f43539
但发送请求后返回401未授权错误:
{ "status": "401", "message": "Unauthorized" }
需要解决这个401错误,同时希望得到Python调用该API的方法。
解决401未授权错误的步骤
- 确认API Key的传递方式:检查官方文档指定的请求头字段名,确保Postman的Headers面板中添加了正确的键值对(比如
api-key或x-api-key),无拼写错误。避免将Key放在URL参数中,除非文档明确要求。 - 验证API Key有效性:确认该Key是针对测试环境(
test.wemix.com)生成的,未过期且拥有查询内部交易的权限。若Key失效或权限不足,需重新生成符合要求的Key。 - 检查请求地址与参数:确认URL中的地址参数(
0xA68A135Ccd37E720000fC30CFcc453b15F8040df)格式正确,无多余空格或字符;确保请求方法为GET,与API要求一致。
Python调用示例
使用requests库发送请求的示例代码如下:
import requests # API地址 url = "https://explorerapi.test.wemix.com/v1/accounts/0xA68A135Ccd37E720000fC30CFcc453b15F8040df/internal-transactions" # 请求头:根据官方文档调整键名,比如改成x-api-key headers = { "api-key": "1ba5e446edf1997f67b51bf9e60b3fbba6fa1bf84301115292805d7e24f43539" } try: # 发送GET请求 response = requests.get(url, headers=headers) # 检查HTTP状态码 response.raise_for_status() # 解析返回的JSON数据 result = response.json() print(result) except requests.exceptions.HTTPError as http_err: print(f"HTTP错误: {http_err}") except requests.exceptions.ConnectionError as conn_err: print(f"连接错误: {conn_err}") except requests.exceptions.Timeout as timeout_err: print(f"超时错误: {timeout_err}") except Exception as err: print(f"其他错误: {err}")
内容的提问来源于stack exchange,提问作者jtoyhh
相关产品推荐
相关产品推荐

