Я пытаюсь использовать API PiXhost для загрузки изображений. Каждый раз, когда я что-то запрашиваю у https://api.pixhost.to/images, он всегда возвращает 400 Bad request. В их документации по API используется пакет unirest python, но я не могу его установить, так как он использует слишком старый код.
Я делаю что-то не так здесь?
Ссылка на документацию
Мой код:
import requests
headers = {
"Content-Type": "multipart/form-data; charset=utf-8",
"Accept": "application/json"
}
params = {
"content_type": "0",
"max_th_size": "420"
}
files = {
"img": open("image.jpg", mode = "rb")
}
response = requests.post("https://api.pixhost.to/images", headers=headers, params=params, files=files)```
Добавил ответ
Не могли бы вы также проголосовать
Просто быстрый тест, мне удалось сделать это через cURL
curl -X POST --include "https://api.pixhost.to/images" \
-H 'Content-Type: multipart/form-data; charset=utf-8' \
-H 'Accept: application/json' \
-F 'img=@test1.jpg' \
-F 'content_type=0' \
-F 'max_th_size=420'
Https://pixhost.to/show/39/178828640_test1.jpg
Примечание: изображение test1 находится в той же папке, когда я запускаю скрипт.
Я также получаю код состояния 400 без тела при удалении @ перед URL-адресом (поэтому проверьте URL-адрес еще раз)
HTTP/1.1 400 Bad Request
Server: nginx/1.10.3 (Ubuntu)
Работает, теперь мне просто нужно преобразовать его в python, используя библиотеку запросов.
import requests
url = "https://api.pixhost.to/images"
payload = {'content_type': '0',
'max_th_size': '420'}
files = {
'img': ('1.JPG', open('C:/Users/prave/Desktop/1.JPG', 'rb')),
'content_type': '0',
'max_th_size': '420'
}
headers = {
}
response = requests.request("POST", url, data=payload, files=files)
print(response)
Ну вот
Выход :
Ответ 200
Проблема с вашим кодом:
Конечная точка ожидает formdata, вы передаете параметр запроса
Итак, как я понял это
Перейдите в документацию и щелкните вкладку curl, чтобы получить эквивалентный код curl:
Теперь перейдите к почтальону и нажмите «Импорт»> «Необработанный текст»> вставьте завиток, нажмите «Продолжить», а затем импортируйте
Это создает запрос для вас
Теперь перейдите к телу и выберите тип img в качестве файла и загрузите файл:
Теперь щелкните код и сгенерируйте эквивалентный код запроса curl и python:
В сгенерированном коде Python было несколько ошибок, один из которых заключался в том, чтобы полностью удалить заголовок, а затем удалить одну косую черту из имени файла.
Пожалуйста, не размещайте изображения текста; см. meta.stackoverflow.com/questions/285551/…
Это не текст, это выходной скриншот из подсказки!
Это скриншот текста, да. Как может скриншот дать какую-то ценность по сравнению с простой копией/вставкой фактического текста здесь? Учтите также многочисленные проблемы юзабилити, связанные со ссылкой.
Изменил на текст
Покажите свой код, что вы пытаетесь сделать, я думаю, это связано с типом запроса "POST"...