Files
Uni-Lab-OS/unilabos/device_comms/rpc.py
Junhan Chang c78ac482d8 Initial commit
2025-04-17 15:19:47 +08:00

67 lines
2.1 KiB
Python

import json
import requests
from rclpy.logging import get_logger
class BaseRequest:
def __init__(self):
self._logger = get_logger(__name__)
def get_logger(self):
return self._logger
def get(self, url, params, headers={"Content-Type": "application/json"}):
try:
response = requests.get(url, params=params, headers=headers, timeout=30)
self.get_logger().debug(
f"Request >>> : {params} {response.status_code} {response.text}"
)
if response.status_code == 200:
return response.json()
except Exception as e:
self.get_logger().error(f"Request ERROR: {e}")
return
def post(self, url, params={}, files=None, headers={"Content-Type": "application/json"}):
try:
response = requests.post(
url, data=json.dumps(params) if params else None, headers=headers, timeout=120, files=files
)
self.get_logger().debug(
f"Request >>> : {response.request.body} {response.status_code} {response.text}"
)
if response.status_code == 200:
return response.json()
else:
raise Exception("Request ERROR:", response.text)
except Exception as e:
self.get_logger().error(f"Request ERROR: {e}")
return
def form_post(self, url, params):
try:
response = requests.post(
url=url,
data=params,
headers={"Content-Type": "application/x-www-form-urlencoded"},
timeout=3,
)
self.get_logger().debug(
f"Request >>> : {response.request.body} {response.status_code} {response.text}"
)
if response.status_code == 200:
return response.json()
else:
raise Exception("Request ERROR:", response.text)
except Exception as e:
self.get_logger().error(f"Request ERROR: {e}")
return
# 使用示例
if __name__ == "__main__":
pass