Запрос Python дает ошибку 415 при отправке данных

Я получаю ошибку 415 при отправке данных на сервер. Это мой код, как я могу решить эту проблему. Заранее спасибо!

import requests
import json
from requests.auth import HTTPBasicAuth
#headers = {'content-type':'application/javascript'}
#headers={'content-type':'application/json', 'Accept':'application/json'}
url = 'http://IPadress/kaaAdmin/rest/api/sendNotification'
data = {"name": "Value"}
r = requests.post(url, auth=HTTPBasicAuth('shany.ka', 'shanky1213'),json=data)
print(r.status_code)

person Mitra Mishra    schedule 07.09.2018    source источник
comment
Вы пытались раскомментировать headers={'content-type':'application/json', 'Accept':'application/json'} и включить заголовки в запрос POST?   -  person Giorgos Myrianthous    schedule 07.09.2018
comment
да, я сделал, но так же, как и предыдущий ответ на ошибку 415.   -  person Mitra Mishra    schedule 07.09.2018


Ответы (2)


Согласно веб-документам MDN,

Код ответа клиента HTTP 415 Unsupported Media Type указывает на то, что сервер отказывается принять запрос, поскольку формат полезной нагрузки не поддерживается.

Проблема с форматом может быть связана с указанным в запросе Content-Type или Content-Encoding или в результате непосредственной проверки данных.

В вашем случае, я думаю, вы пропустили заголовки. Раскомментировать

headers={
    'Content-type':'application/json', 
    'Accept':'application/json'
}

и включив headers в свой POST запрос:

r = requests.post(
    url, 
    auth=HTTPBasicAuth('shany.ka', 'shanky1213'),
    json=data,
    headers=headers
)

должен сделать трюк


import requests
import json
from requests.auth import HTTPBasicAuth


headers = {
    'Content-type':'application/json', 
    'Accept':'application/json'
}
url = 'http://IPadress/kaaAdmin/rest/api/sendNotification'
data = {"name": "Value"}

r = requests.post(
    url, 
    auth=HTTPBasicAuth('shany.ka', 'shanky1213'), 
    json=data, 
    headers=headers
)
print(r.status_code)
person Giorgos Myrianthous    schedule 07.09.2018
comment
Будучи новичком в Python, я был сбит с толку разницей параметров данных json x, я продолжал получать 415 при использовании параметра данных для отправки тела. Использование параметра json решает проблему, и вам даже не нужно отправлять заголовок типа контента. - person Diego Victor de Jesus; 26.04.2021
comment
Я получаю ту же ошибку и публикую ее здесь как новый вопрос: stackoverflow.com/questions/67936078/ и решение такое же. я должен добавить data={"key,"value"}, чтобы заставить его работать, хотя data является необязательным ключевым словом в соответствии с документами. - person D.L; 11.06.2021

В качестве обходного пути попробуйте запустить API с помощью Postman. Когда вы сможете успешно нажать API в почтальоне, сгенерируйте код Python в почтальоне (кнопка присутствует в правом верхнем углу). Вы можете скопировать код в свой проект Python.

person Aditya    schedule 02.04.2020
comment
Почтальон на самом деле дает вам хороший код. Я столкнулся с той же проблемой, но я следил за этим, а затем разобрался со своей проблемой. Вот ссылка, чтобы узнать, как получить код от почтальона youtube.com/watch?v=4XxcBI2uViA - person Chris Claude; 23.04.2020