将带有两个标题的curl转换为python

时间:2016-11-19 22:42:25

标签: python curl python-requests api-key

我想将以下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参数来显示' - '? 感谢。

1 个答案:

答案 0 :(得分:0)

\xe2\x80\x90是一个unicode连字符,而不是ASCII。您应该直接键入密钥,而不是使用您剪切的密钥。粘贴。确保你发送ascii。

话虽如此,我确实切入了&粘贴你的代码,没有问题。 (请务必将json.dump(data)更改为json.dumps(data)

检查哪个版本的python和请求?