1
votes

Python / Requests - Impossible d'envoyer POST correctement, bien qu'il fonctionne dans Postman

toutes les personnes. J'ai le code suivant:

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 réponse est 400. Mais lorsque j'utilise Postman avec JSON brut: {"userId": "xxx", "chatId": "xxx"}

Cela me donne 200.

Je ne comprends pas la différence. Merci.


1 commentaires

Avez-vous essayé d'utiliser answer = requests.post(url, data=json.dumps(data), headers=headers) au lieu de votre code actuel? N'oubliez pas non plus d' import json


3 Réponses :


1
votes

Pour le facteur, il dispose déjà d'une fonctionnalité permettant de générer du code pour n'importe quel langage de programmation, il vous suffit de cliquer sur le bouton de code et vous obtiendrez le code.

entrez la description de l'image ici

il vous suffit de cliquer sur le bouton de code à droite de l'image


0 commentaires

1
votes

Utilisez le paramètre json au lieu des data . Notez qu'ils ne sont pas les mêmes: Différence entre les paramètres data et json dans le package de requêtes python .

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


0 commentaires

1
votes

Peut-être un problème avec les données. Non?

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

au lieu de

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


1 commentaires

Bonne prise, je ne l'ai pas remarqué au premier coup d'œil.