我正在尝试使用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)