向 Openhab2 和 Swift 发布 API 请求

Posting API request to Openhab2 and Swift

我正在尝试 post 从我正在开发的自定义 Swift iOS 应用程序向我的 Openhab 系统发出请求,但是我似乎无法得到响应。

我正在使用以下但无法触发传感器。

AF.request("http://192.168.1.1:8080/rest/items/BinarySensor", method: .post, parameters: ["":"ON"], encoding: URLEncoding.httpBody, headers: ["Content-Type":"text/plain"])

感谢任何帮助。

您需要将编码更改为 JSONEncoding.default,将 headers 更改为 application/json。这是您的请求现在的样子

AF.request("http://192.168.1.1:8080/rest/items/BinarySensor", method: .post, parameters: ["":"ON"], encoding: JSONEncoding.default, headers: ["Content-Type":"application/json"])

我走了一条不同的路。不使用 Alamofire,只使用标准 Swift 网络。 Postman 允许为特定请求创建多个不同语言的代码块,因此使用它生成的请求。

如果有人想知道如何在没有 Alamofire 的情况下做到这一点,答案如下。

import Foundation

var semaphore = DispatchSemaphore (value: 0)

let parameters = "OFF"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string:"http://192.168.x.x:8080/rest/items/BinarySensor")!,timeoutInterval: Double.infinity)
request.addValue("text/plain", forHTTPHeaderField: "Content-Type")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in 
  guard let data = data else {
    return
  }
  semaphore.signal()
}

task.resume()
semaphore.wait()

我确定有更好的方法,但这种方法有效。