В качестве локального сервера установлен API-интерфейс basi c, который выполняет такие функции, как добавление камеры, звездная камера, список камер, снимок кадра камеры и т. Д. c.
Моя проблема после следуя документации, я все еще не могу хорошо с ней взаимодействовать и получить ответ, который мне нужен. Вот код, который я использую для входа в систему и получения токена проверки:
import requests
import urllib.request
import json
base_url = "http://localhostip:8080/api/user/login?"
parameters = {
"username": username,
"password": password
}
auth_tok = requests.post(base_url + urllib.parse.urlencode(parameters)).json()
print(auth_tok)
Я получаю правильный документированный ответ с токеном, поэтому, следуя документации для добавления камеры, мне нужно 2 параметра, URL
и Name
, поэтому я сделал:
base_url = "http://localhostip:8080/api/camera/add?"
parameters = {
"url": 'rtsp://192.168.1.23/1',
#or video file
"url" : '/home/video/sample.mov'
"name" : 'cam1'
}
r = requests.post(base_url + urllib.parse.urlencode(parameters),headers={'Authorization': auth_tok})
когда я напечатал ответ:
-print (r)
-print (r.url)
-print(r.status_code)
-print(r.json())
Я получил это:
<Response [500]>
http://192.168.0.162:8080/service/api/camera/add?url=rtsp%3A%2F%2Frtsp%3A%2F%2F192.168.1.23&name=cam1
500
{'code': -111, 'message': None}
Согласно документации правильный URL должно быть так:
http://192.168.0.6:8080/service/api/camera/add?url=rtsp://192.168.1.23&name=cam1
и ответ должен быть:
Response:
{"status":"ok"}
Так почему и как сделать URL POST в правильном формате, потому что Я подозреваю, что это проблема, URL содержит эти символы кодирования, которые могут испортить запрос?
Когда я использую веб-браузер GUI этого API, я могу добавить камеру или даже видеофайл в играть, но я пытаюсь сделать то же самое с Python, чтобы я мог продолжить обработку в будущем.