Запросы Python: передача токена авторизации - PullRequest
0 голосов
/ 16 мая 2019

Я использую SMS API MailJet, и у меня возникают проблемы с правильным синтаксисом токена / аутентификации.

В cURL запрос должен выглядеть следующим образом (cf Docs ):

curl -s \
     -X POST \
     --user "$MJ_APIKEY_PUBLIC:$MJ_APIKEY_PRIVATE" \
     https://api.mailjet.com/v4/sms-send \
     -H 'Content-Type: application/json' \
     -d '{
        "From": "MJPilot",
        "To": "+33600000000",
        "Text": "Have a nice SMS flight with Mailjet!"
      }'

Но я не знаю, как преобразовать эту фразу в Python, это моя текущая идея:

import requests, json

headers = {
    'Authorization': 'Bearer ' + 'MYTOKEN',
    'Content-Type': 'application/json',
}
tel='XXXX'
message = "this is a message"
payload= {"From":"Me", "To":tel, "message":message}
r_sms = requests.post("https://api.mailjet.com/v4/sms-send", data=payload, headers=headers)
print("SMS SENT" + str(r_sms.json()))

со следующим ответом:

SMS SENT{'ErrorIdentifier': 'f403ce05-1db3-4c30-ac74-314fa93a9e84', 'ErrorCode': 'mj-0002', 'ErrorMessage': 'Malformed JSON, please review the syntax and properties types.', 'StatusCode': 400}

Я знаю, что мой токен действителен, потому что я могу правильно выполнить запрос через Почтальон

1 Ответ

1 голос
/ 16 мая 2019

Ваша полезная нагрузка json, поэтому kwarg равен json, а не data:

r_sms = requests.post("https://api.mailjet.com/v4/sms-send", json=payload, headers=headers)

Кроме того, в вашей полезной нагрузке, похоже, должно быть "Text", а не "message"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...