Я создаю базовое мобильное приложение iOS для захвата изображения на устройстве камеры, подключившись напрямую через WiFI и используя HTTP POST REQUEST.
Для захвата изображения функция должна вызвать две (2) команды.Один (1) для активации затвора и один (1) для спуска затвора.Так что эту конкретную команду необходимо выполнить 2 раза последовательно.
Это формат ЗАПРОСА ПОСТА на камеру:
REQUEST TO TAKE A PICTURE
POST
camera_API_URL
{
"action": "half_press",
"af": “true”
}
REQUEST TO STOP TAKING A PICTURE
POST
camera_API_URL
{
"action": "release",
"af": “false”
}
Сначала я проверяю, могу ли я получить информацию оустройство:
guard let url = URL(string: "camera_API_URL") else { return }
let session = URLSession.shared
session.dataTask(with: url) { (data, response, error) in
if let response = response {
print(response)
}
if let data = data {
print(data)
do {
let json = try JSONSerialization.jsonObject(with: data, options: [])
print(json)
} catch {
print(error)
}
}
}.resume()
Это дает следующий ответ данных JSON:
<NSHTTPURLResponse: 0x283bb96c0> { URL: camera_API_URL } { Status Code: 200, Headers {
"Content-Length" = (
199
);
"Content-Type" = (
"application/json"
);
} }
199 bytes
{
firmwareversion = "1.0.1";
guid = 1q2w3e4r5t6y7u8i9o0p;
macaddress = "04:1f:2e:12:1d:93";
munufacturer = "Some Company";
productname = "DSLR Camera Name";
serialnumber = 1234567890;
}
Затем я продолжаю выполнять первый триггер:
let parametersOpenShutter = ["action": "half_press", "af": "true"]
let parametersCloseShutter = ["action": "release", "af": "false"]
guard let url = URL(string: "camera_API_URL") else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
guard let httpBody = try? JSONSerialization.data(withJSONObject: parametersOpenShutter, options: []) else { return }
request.httpBody = httpBody
let session = URLSession.shared
session.dataTask(with: request) { (data, response, error) in
if let response = response {
print(response)
}
if let data = data {
do {
let json = try JSONSerialization.jsonObject(with: data, options: [])
print(json)
} catch {
print(error)
}
}
}.resume()
Это приводит к следующемуОтвет JSON:
<NSHTTPURLResponse: 0x2825bfa80> { URL: camera_API_URL } { Status Code: 400, Headers {
"Content-Length" = (
31
);
"Content-Type" = (
"application/json"
);
} }
{
message = "Invalid parameter";
}
Я не уверен, что делаю неправильно, чтобы получить неверный параметр.
Пожалуйста, проверьте.
Как мне кодировать приложение, чтобы выполнить (2) HTTP POST ЗАПРОСЫ последовательно открывать и закрывать затвор?