Помогите составить POST запрос модуле на Python

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
Аватара пользователя
Prince660
Активный участник
Сообщения: 164
Зарегистрирован: 25 мар 2011, 20:12
Репутация: 15
Ваше звание: Питоновод
Откуда: г. Симферорполь
Контактная информация:

Помогите составить POST запрос модуле на Python

Сообщение Prince660 » 26 фев 2019, 17:01

Пишу модуль для 2й версии QGIS на Python2 соответственно.

Встала проблема что нехватает знаний как правильно составить POST запрос для отправки файла на сервер, поскольку я не программист, а геоэколог.
Нужно отправить на сервер файл и получить от сервера ответ об успехе/неудачи загрузки. Пока у меня только неудачи.
При этом через веб интерфейс загрузить файл удаётся. Отследил какой POST запрос отправляет браузер, но как его реализовать в Python понять не могу.

Так выглядит запрос в браузере:
Снимок.PNG
Снимок.PNG (52.7 КБ) 5208 просмотров
Пример кода с неудачными загрузками:

Код: Выделить всё

import requests

login = 'user123'
password = 'pass123'
  
file_adr = '/home/user/modul/all_classes.geojson'
f = open(file_adr, 'rb')
send_text = f.read()
new_file_name = 'all_classes'

headers = { 'Content-Type': 'application/geo+json', 'Accept': 'application/json'} 
url = 'https://website.ru/edit-markup/2/all_classes/1/update'  #5097
files_t = {'name': 'files', 'filename': new_file_name, 'orthophotomapId': '1', 'files': f, 'append': 'false'. 'format': 'geojson_v0' }

r = requests.post(url, files_t, headers, auth=(login, password))

print r.text
#print send_text
r.connection.close()
f.close()

qosmos
Новоприбывший
Сообщения: 6
Зарегистрирован: 26 сен 2018, 15:18
Репутация: 0
Откуда: SPb

Re: Помогите составить POST запрос модуле на Python

Сообщение qosmos » 26 фев 2019, 17:10

Как минимум, в приведённом коде присутствует синтаксическая ошибка: "f." вместо "f,"

Dmitry Stasev
Участник
Сообщения: 67
Зарегистрирован: 13 мар 2018, 08:59
Репутация: 22
Откуда: MO

Re: Помогите составить POST запрос модуле на Python

Сообщение Dmitry Stasev » 26 фев 2019, 17:43

Prince660 писал(а):
26 фев 2019, 17:01
files_t = {'name': 'files', 'filename': new_file_name, 'orthophotomapId': '1', 'files': f, 'append': 'false'. 'format': 'geojson_v0' }
'false', 'format'
А что в консоли пишет?

Аватара пользователя
Prince660
Активный участник
Сообщения: 164
Зарегистрирован: 25 мар 2011, 20:12
Репутация: 15
Ваше звание: Питоновод
Откуда: г. Симферорполь
Контактная информация:

Re: Помогите составить POST запрос модуле на Python

Сообщение Prince660 » 26 фев 2019, 19:29

Исправил синтаксис.
Dmitry Stasev писал(а):
26 фев 2019, 17:43
А что в консоли пишет?
Получаю такой ответ.

Код: Выделить всё

<html>
<head><title>405 Not Allowed</title></head>
<body>
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx/1.15.5</center>
</body>
</html>
Но в зависимости от того как я модифицировал код бывали и другие ошибки (400, 403, 500)

qosmos
Новоприбывший
Сообщения: 6
Зарегистрирован: 26 сен 2018, 15:18
Репутация: 0
Откуда: SPb

Re: Помогите составить POST запрос модуле на Python

Сообщение qosmos » 27 фев 2019, 08:05

Вызов попробуйте оформить, как положено:

Код: Выделить всё

r = requests.post(url, files=files_t, headers=headers, auth=(login, password))

Аватара пользователя
Prince660
Активный участник
Сообщения: 164
Зарегистрирован: 25 мар 2011, 20:12
Репутация: 15
Ваше звание: Питоновод
Откуда: г. Симферорполь
Контактная информация:

Re: Помогите составить POST запрос модуле на Python

Сообщение Prince660 » 27 фев 2019, 14:08

Оформил как положено - ничего не изменилось. Ошибка 405

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 14 гостей