Страница 1 из 1

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

Добавлено: 26 фев 2019, 17:01
Prince660
Пишу модуль для 2й версии QGIS на Python2 соответственно.

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

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

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

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()

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

Добавлено: 26 фев 2019, 17:10
qosmos
Как минимум, в приведённом коде присутствует синтаксическая ошибка: "f." вместо "f,"

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

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

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

Добавлено: 26 фев 2019, 19:29
Prince660
Исправил синтаксис.
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)

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

Добавлено: 27 фев 2019, 08:05
qosmos
Вызов попробуйте оформить, как положено:

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

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

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

Добавлено: 27 фев 2019, 14:08
Prince660
Оформил как положено - ничего не изменилось. Ошибка 405