如何解决Python调用加密货币API时出现的InvalidURL非数字端口错误
问题原因
http.client.HTTPConnection构造参数仅接受主机域名,你错误传入了带https://协议前缀和/v2路径的完整地址,解析器会把//后面的内容识别为端口号,因此触发非数字端口的报错。同时该API走HTTPS协议,需要使用HTTPSConnection而非HTTPConnection。- 请求的路径参数使用了逗号分隔,不符合HTTP路径规范,实际应该用斜杠分隔,且需要补上
/v2路径前缀。
修正后可运行代码
import http.client # 仅传入主机域名,使用HTTPS连接 conn = http.client.HTTPSConnection("rest.cryptoapis.io") headers = { 'Content-Type': "application/json", 'X-API-Key': "替换为服务商提供的实际API密钥" } # 路径用斜杠分隔,补全/v2前缀 conn.request("GET", "/v2/blockchain-data/bitcoin/testnet/transactions/4b66461bf88b61e1e4326356534c135129defb504c7acb2fd6c92697d79eb250", headers=headers ) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
新手更友好的写法推荐
如果你刚接触Python,更推荐使用requests库发起请求,语法更简洁,不容易出现路径拼接类的低级错误:
import requests API_KEY = "替换为服务商提供的实际API密钥" url = "https://rest.cryptoapis.io/v2/blockchain-data/bitcoin/testnet/transactions/4b66461bf88b61e1e4326356534c135129defb504c7acb2fd6c92697d79eb250" headers = { "Content-Type": "application/json", "X-API-Key": API_KEY } response = requests.get(url, headers=headers) print(response.text)
内容的提问来源于stack exchange,提问作者J.Doe
相关产品推荐
相关产品推荐

