#python #laravel #post #request
Вопрос:
Мне нужно отправить словарь с запросом POST, созданный на Python, на веб-страницы, созданные в Laravel. Я видел в Интернете, что мне нужно импортировать библиотеку запросов, но я не понимаю, как это работает.
Мой скрипт на python таков:
mac_dict = {}
def readFile():
with open("/home/pi/Desktop/Progetti SIoTD/device.txt", "r") as file:
for i in file:
line, *lines = i.split()
if line in mac_dict:
mac_dict[line] = lines
else:
mac_dict[line] = lines
print(mac_dict)
print("n")
return mac_dict
'''
def get_all_values(nested_dictionary):
for key, value in nested_dictionary.items():
if type(value) is dict:
get_all_values(value)
else:
print(key, ":", value)
print("n")
'''
def getValues(dict, mac):
s = 0
rssi_val = []
for key in dict:
if key == mac:
k = dict.get(mac)
for i in range(len(k)):
if i % 2 == 0:
rssi = k[i]
rssi = int(rssi)
print(rssi)
rssi_val.append(rssi)
else:
k_v = k[i]
print(k_v)
for i in range(len(rssi_val)):
s = rssi_val[i]
average = s / len(rssi_val)
return average
readFile()
#get_all_values(mac_dict)
getValues(mac_dict, 'C4:A5:DF:24:05:7E')
Как я могу это сделать?
Заранее спасибо
Обновить
Мне нужно отправить словарь, который я прочитал из файла (функция ReadFile)…этот файл представляет собой TXT-файл, содержащий MAC-адрес, RSSI и строку со временем; также файл находится в Raspberry Pi4 модели B, которую я использую для сканирования сигнала Bluetooth и создания TXT-файла
Комментарии:
1.
requests.post(url, data={..dictionary...})
2. у вас есть пропущенные имена переменных — это должно быть скорее
for line in file:
3. неясно, какие данные вы хотите отправить. Вы показываете, как вы читаете некоторые данные из файла, но лучше покажите пример данных, которые вы хотите опубликовать на сервере.
Ответ №1:
Если у вас есть веб-сайты, написанные на 2 разных языках, наиболее надежным методом установления связи между ними является метод API. Вы можете принять запрос на публикацию, введя api в системе, написанной на Laravel. Затем вы можете легко отправить текст или файл с помощью python в этом почтовом запросе по адресу laravel api url.
Ответ №2:
отправить API и в Laravel использовать
`public function __construct(){
$data = "//API Here//";
$this->data = $data;
}`
`public function store(){
// rest of the code here you can find any where
}
`
Ответ №3:
Вы не объяснили, какие данные вы хотите отправить, поэтому я могу показать только базовый синтаксис.
import requests
url = 'https://...'
my_dict = {...}
response = requests.post(url, data=my_dict)
print(response.text)
Но все может зависеть от деталей, которые вы не показали в вопросе.
Минимальный рабочий код, который использует портал httpbin.org
для тестирования. Он отправляет обратно все заголовки с ПОСТА
import requests
url = 'https://httpbin.org/post'
my_dict = {'message': 'hello world'}
response = requests.post(url, data=my_dict)
print(response.text)
Результат:
{
"args": {},
"data": "",
"files": {},
"form": {
"message": "hello world"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate, br",
"Content-Length": "19",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.26.0",
"X-Amzn-Trace-Id": "Root=1-6176a644-76c6320f5f4ae9b05a118b2f"
},
"json": null,
"origin": "79.163.228.53",
"url": "https://httpbin.org/post"
}
Он показывает "form": {"message": "hello world"}
, что я отправляю на сервер.