Я пытаюсь отправить почтовые запросы на Visa API с помощью Python-запросов.
Мне удалось отправить через игровую площадку визового центра разработчиков, и она работает. но сделать это с Python не работает.
мой код:
url = "https://sandbox.api.visa.com/filedeliveryservice/v1/binFileTransfer"
request_body = {
"requestHeader": {
"requestTS": "2017-02-15T22:05:00.000",
"requestMessageId": "testAnna"
},
"requestData": {"fileName": "VBASS_TR_LEVEL3_03262024_3.csv"}
}
r = requests.post(url,
cert=(client_cert, client_key),
auth=(user_id, password),
data=json.dumps(request_body),
timeout=10
)
ответ:
b'{"timestamp":"2024-07-11T06:09:10.260+00:00","status":415,"error":"Unsupported Media Type","path":"/CDISI_VBASS/services/v1/binFileTransfer"}'
что я делаю не так, пока понятия не имею.
это вообще правильный способ отправить запрос? я не могу найти достоверный источник по этой теме в Интернете
Ошибка «Неподдерживаемый тип носителя» (код состояния HTTP 415) указывает на то, что сервер отклоняет запрос, поскольку Content-Type
запроса не соответствует ожидаемому. Для Visa API вам, вероятно, потребуется установить для заголовка Content-Type
значение application/json
при отправке полезных данных JSON.
Обновленный код:
import requests
import json
url = "https://sandbox.api.visa.com/filedeliveryservice/v1/binFileTransfer"
request_body = {
"requestHeader": {
"requestTS": "2017-02-15T22:05:00.000",
"requestMessageId": "testAnna"
},
"requestData": {"fileName": "VBASS_TR_LEVEL3_03262024_3.csv"}
}
headers = {
"Content-Type": "application/json"
}
r = requests.post(
url,
headers=headers,
cert=(client_cert, client_key),
auth=(user_id, password),
data=json.dumps(request_body),
timeout=10
)
print(r.text)
Словарь заголовков включает Content-Type: application/json
, чтобы сообщить серверу, что тело запроса имеет формат JSON
.
это сработало. Я попытался добавить заголовки, но это привело к другим ошибкам. после публикации я снова поискал и после помощи чатгпта, наконец, это сработало, просто добавив это в качестве заголовков
headers = {
'Content-Type': 'application/json',
"Accept": "application/json"
}
Обратите внимание, что Генеративный ИИ (например, ChatGPT) запрещен , и прочтите Справочный центр: Политика ИИ. Запрещено использовать инструменты искусственного интеллекта для создания или изменения содержания контента, который вы публикуете в Stack Overflow.