我有一个问题,我尝试使用Alamofire的PATCH方法进行更新,但未反映任何更改。
我认为我犯了一个错误。
这是我的代码:
Alamofire.request(.PATCH, url, parameters: ["op": "replace", "path": "/IsVacinated", "value": true], encoding: .JSON)
.responseJSON { response in
Utils.endRequest(progressView)
if let data = response.data {
let json = JSON(data: data)
if json != nil {
self.navigationController?.popViewControllerAnimated(true)
print(json)
}
else {
print("nil json")
}
}
else {
print("nil data")
}
}
希望您能对我有所帮助,并且我搜索的信息不多。
最好的祝福。
最佳答案
您需要使用自定义编码,并将参数作为原始字符串发送到正文中
let enconding: ParameterEncoding = .Custom({convertible, params in
let mutableRequest = convertible.URLRequest.copy() as? NSMutableURLRequest
mutableRequest?.HTTPBody = "[{\"op\" : \"replace\", \"path\" : \"/IsVacinated\", \"value\":true"}]".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
if let mutableRequest = mutableRequest {
return (mutableRequest, nil)
}
let error = NSError(domain: "Custom", code: -1, userInfo: nil)
return (convertible.URLRequest, error)
})
最后使用自定义编码
Alamofire.request(.PATCH, url, parameters: [:], encoding: encoding)
.responseJSON { response in
Utils.endRequest(progressView)
if let data = response.data {
let json = JSON(data: data)
if json != nil {
self.navigationController?.popViewControllerAnimated(true)
print(json)
}
else {
print("nil json")
}
}
else {
print("nil data")
}
}