0

我正在尝试从我正在开发的自定义 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"])

任何帮助表示赞赏。

4

2 回答 2

0

您需要将编码更改为 JSONEncoding.default 并将标头更改为 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"])
于 2019-12-07T12:08:40.120 回答
0

我走了一条不同的路。不使用 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()

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

于 2019-12-08T23:15:58.520 回答