Я хотел бы преобразовать следующую OpenFIGI команду API в Python:Преобразовать локон с двумя заголовками в 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)
У кого-нибудь есть идея, почему он не работает? Я что-то упускаю? Большое спасибо за вашу помощь.
- EDIT -
кажется, что проблема исходит от кодировки из «-» в самом ключе.
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».
Есть ли способ изменить параметры request.post для отображения '-'? Спасибо.
Вы пытались преобразовать json вручную? Вместо 'json = data', возможно,' data = json.dumps (data) ' – Shaun
Похоже, что ваша команда curl не отправляет' "exchCode": "US" ', но ваш код запросов. –
Я попытался с 'data = json.dumps (data)' и, к сожалению, он все еще дает мне код 400. Проблема, похоже, связана с тем, как я передаю ключ api, но не могу понять, почему именно ... – CarlosM