Python / Requests - Não é possível enviar POST corretamente, apesar de estar funcionando no Postman

Nov 16 2020

todos. Eu tenho o seguinte 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)

A resposta é 400. Mas quando eu uso o Postman com JSON bruto: {"userId": "xxx", "chatId": "xxx"}

Isso me dá 200.

Não consigo entender a diferença. Obrigado.

Respostas

1 Sparrow_ua Nov 16 2020 at 00:36

Talvez um problema com os dados. Não?

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

ao invés de

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

Para o carteiro, já possui um recurso para gerar código para qualquer linguagem de programação basta clicar no botão código e você obterá o código.

basta clicar no botão de código do lado direito da imagem

1 AttilaViniczai Nov 16 2020 at 00:31

Use o jsonparâmetro em vez de data. Observe que eles não são iguais: Diferença entre dados e parâmetros json no pacote de solicitações python .

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