Запрос Python отправляет post-запрос с параметрами, отличными от словаря

#python #http #post #request

#питон #http #Публикация #запрос

Вопрос:

Так что кажется, что это было бы просто сделать, но, похоже, я не могу заставить это работать. Я хочу отправить post-запрос на локальный сервер flask, работающий на моем компьютере. Поэтому я использую для этого следующую строку кода

 r = requests.post(end_url   '/upload/flash', cookies=cookie, params='title=asdfgamp;description=asdfgamp;front1=famp;back1=bamp;number=1amp;edu_level=amp;school=amp;course=amp;grade=amp;unit=amp;chapter=amp;section=amp;tag=')
 

Проблема не в параметрах, которые я передаю в функцию, поскольку они отформатированы правильно. Проблема в том, что сервер flask пытается получить доступ к аргументу «title» из запроса, но не может его найти. Все примеры, которые я видел, форматируют параметры в словаре (напр.

 {"title": "asdfg"}
 

Я бы предположил, что можно отправить запрос так, как я пытаюсь, но не уверен, что я сделал не так.

Комментарии:

1. Вы должны отправить параметры как dict. Не уверен, почему вы пытаетесь использовать строку.

2. Если вы хотите, чтобы ваши параметры строки запроса были, ну, строкой, а не dict , то почему бы не сделать их частью URL? Нравится /upload/flash?title=asdfamp;...

3. @PaulM. Спасибо за ответ. Я предполагаю, что я бы сделал это так r = requests.post(end_url '/upload/flash?' 'title=asdfgamp;description=asdfgamp;front1=famp;back1=bamp;number=1amp;edu_level=amp;school=amp;course=amp;grade=amp;unit=amp;chapter=amp;section=amp;tag=', cookies=cookie) , если бы я все еще сталкивался с той же проблемой.

Ответ №1:

На самом деле проблема была не в параметрах. Я путал «параметры» и «данные». Мне также нужно было включить заголовки

 headers={"Content-Type": "application/x-www-form-urlencoded"}
 

Спасибо всем, кто помогает мне устранять неполадки в моем коде.