Python / Requests: no se puede enviar POST correctamente, a pesar de que funciona en Postman

Nov 16 2020

todos. Tengo el siguiente código:

url = "url"
headers = {'Content-type': 'application/json'}

bot = telebot.TeleBot('xxx')



@bot.message_handler(commands=['start'])
def start_message(message):
    bot.send_message(message.chat.id, message.chat.id)
    bot.send_message(message.chat.id, message.chat.username)
    data = {"userId": "message.chat.username", "chatId": "message.chat.id"}
    answer = requests.post(url, data=data, headers=headers)
    print(answer)

La respuesta es 400. Pero cuando uso Postman con JSON sin formato: {"userId": "xxx", "chatId": "xxx"}

Me da 200.

No puedo entender la diferencia. Gracias.

Respuestas

1 Sparrow_ua Nov 16 2020 at 00:36

Quizás problema con los datos. ¿No?

data = {"userId": f"{message.chat.username}", "chatId": f"{message.chat.id}"}

en vez de

data = {"userId": "message.chat.username", "chatId": "message.chat.id"}
1 vgeorge Nov 16 2020 at 00:01

Para el cartero, ya tiene una función para generar código para cualquier lenguaje de programación, solo necesita hacer clic en el botón de código y obtendrá el código.

simplemente haga clic en el botón de código del lado derecho de la imagen

1 AttilaViniczai Nov 16 2020 at 00:31

Utilice jsonparámetro en lugar de data. Tenga en cuenta que no son lo mismo: diferencia entre datos y parámetros json en el paquete de solicitudes de Python .

answer = requests.post(url, json=data, headers=headers)