Как правильно выполнить POST запрос в функции post с передачей параметра из текстового поля
Подскажите как правильно написать в запросе.
from tkinter import *
import requests
def clicked():
res = f"Отправлено на номер"
lbl.configure(text=res)
def send():
clicked()
post()
def post():
url = 'https://bsms.tele2.ru/api/send?operation=send&login=&password=&msisdn=msisdn&shortcode=inpk&text=https://www.cnord.ru/myalarm.html'
msisdn = txt.get()
window = Tk()
window.title("Добро пожаловать в приложение PythonRu")
window.geometry('400x250')
lbl = Label(window, text="Введите номер телефона c 7")
lbl.grid(column=0, row=0)
txt = Entry(window, width=10)
txt.grid(column=1, row=0)
txt.focus()
btn = Button(window, text="Отправить ссылку!", command=send)
btn.grid(column=2, row=0)
window.mainloop()
Ответы (2 шт):
Автор решения: humanian
→ Ссылка
r = requests.post(
'https://bsms.tele2.ru/api/send?operation=send&login=&password=msisdn=msisdn&shortcode'
'=inpk&text=https://www.cnord.ru/myalarm.html')
В таком виде работает
Автор решения: insolor
→ Ссылка
Хорошо, допустим, вы отправляете запрос как
r = requests.post(
'https://bsms.tele2.ru/api/send?operation=send&login=&password=msisdn=msisdn&shortcode'
'=inpk&text=https://www.cnord.ru/myalarm.html')
И вы спрашиваете, как это сделать более правильно, и как передать туда параметр msisdn, полученный из текстового поля.
Все параметры, которые идут внутри url после ? имеет смысл вынести в словарь и передавать их через params (документация):
params = dict(
operation="send",
login=".....",
password=".....",
msisdn=txt.get(),
shortcode="inpk",
text="https://www.cnord.ru/myalarm.html",
)
# Это аналогично такому словарю,
# но через dict легче читается и меньше раз нужно нажимать кавычку:
# params = {
# 'operation': 'send',
# 'login': '.....',
# 'password': '.....',
# 'msisdn': txt.get(),
# 'shortcode': 'inpk',
# 'text': 'https://www.cnord.ru/myalarm.html'
# }
r = requests.post("https://bsms.tele2.ru/api/send", params=params)
Ну и соответственно добавляете это в вашу функцию post:
def post():
params = dict(
operation="send",
login=".....",
password=".....",
msisdn=txt.get(),
shortcode="inpk",
text="https://www.cnord.ru/myalarm.html",
)
r = requests.post("https://bsms.tele2.ru/api/send", params=params)