我正在尝试使用POST向API发送一些内容。柱体由x 2个属性组成。
如果我将post主体创建为一个长字符串:
let postBody = "ministryId=nameOfMinistryHere&personId=1005"然后对字符串进行编码,如下所示urlRequest.httpBody = postBody.data(using: String.Encoding.utf8)它工作得很好。
但我试图创建一个字典,然后将其传递给API,但无法使其工作。

let postBody = ["ministryId":"nameOfMinistry", "personId":"1005"]
    do {
      try urlRequest.httpBody = JSONSerialization.data(withJSONObject: postBody, options: .prettyPrinted)
       } catch {
           print("problems serializing data")
       }

当我使用后一个选项时,我从服务器得到一个400错误。
我错过了什么?
提前谢谢。

最佳答案

URLComponents是处理多个参数的类。代码段:

let postBody = ["ministryId":"nameOfMinistry", "personId":"1005"]

let urlComponents = URLComponents(string: myURL)
let urlRequest = URLRequest(url: urlComponents.url!)

// transform the dictionary into queryItems
urlComponents.queryItems = postBody.map { URLQueryItem(name: $0, value: $1) }

urlRequest.httpBody = urlComponents.percentEncodedQuery?.data(using: String.Encoding.utf8)

10-04 10:35