我想将以下OpenFIGI API命令转换为python:
curl ‐v ‐X POST 'https://api.openfigi.com/v1/mapping'
‐‐header 'Content‐Type: text/json'
‐‐header 'X‐OPENFIGI‐APIKEY: abcdefghijklmnopqrstuvwxyz'
‐‐data '[{"idType":"ID_WERTPAPIER","idValue":"851399"}]'
我设法让它在没有X-OPENFIGI-APIKEY的情况下工作,但找不到用两个标头发送的方法。
这是我的工作代码:
import requests
data = [{"idType":"TICKER","idValue":"AAPL","exchCode":"US"}]
headers={"Content-Type": "text/json"}
r=requests.post('https://api.openfigi.com/v1/mapping',headers=headers,json=data)
但是包含API密钥,它会返回一个代码'400',根据openfigi,它是'请求体不是数组'。
headers={"Content-Type": "text/json",'X‐OPENFIGI‐APIKEY' : var_key }
r=requests.post('https://api.openfigi.com/v1/mapping',headers=headers,json=data)
有人会知道它为什么不起作用吗?我错过了什么吗? 非常感谢你的帮助。
- 编辑 -
似乎问题来自密钥本身中“ - ”的编码。
data = [{"idType":"TICKER","idValue":"AAPL","exchCode":"US"}]
h1= {"Content-Type": "text/json","X_OPENFIGI_APIKEY" : "11111‐2222‐XXXX‐5555‐AAAAAAAA" }
r=requests.post('https://api.openfigi.com/v1/mapping',headers=h1,data=json.dump(data) )
r.request.headers
上面的代码在请求标头中显示'X-OPENFIGI-APIKEY':'11111 \ xe2 \ x80 \ x902222 \ xe2 \ x80 \ x90XXXX \ xe2 \ x80 \ x905555 \ xe2 \ x80 \ x90AAAAAAAA'。
我想它应该是'X-OPENFIGI-APIKEY':'11111-XXXX-5555-AAAAAAAA'。
有没有办法修改我的requests.post参数来显示' - '? 感谢。
答案 0 :(得分:0)
\xe2\x80\x90
是一个unicode连字符,而不是ASCII。您应该直接键入密钥,而不是使用您剪切的密钥。粘贴。确保你发送ascii。
话虽如此,我确实切入了&粘贴你的代码,没有问题。 (请务必将json.dump(data)
更改为json.dumps(data)
)
检查哪个版本的python和请求?