我正在尝试删除父重复事件(因此父和所有实例都将被删除)。
将URLSession
与手动构建的URLRequest一起使用时,请求将返回 412 错误代码。我没有提供If-Match标头,并且从创建到删除事件都没有任何变化。
使用Postman或Paw执行请求,请求成功,状态码为 204 ,这是期望的结果。
我这样构造请求:
func delete(eventWithId eventId: String, token: String) {
let sessionConfig = URLSessionConfiguration.default
let session = URLSession(configuration: sessionConfig, delegate: nil, delegateQueue: nil)
guard var URL = URL(string: "https://www.googleapis.com/calendar/v3/calendars/primary/events/\(eventId)") else {return}
var request = URLRequest(url: URL)
request.httpMethod = "DELETE"
request.addValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
let task = session.dataTask(with: request, completionHandler: { (data: Data?, response: URLResponse?, error: Error?) -> Void in
if (error == nil) {
let statusCode = (response as! HTTPURLResponse).statusCode // <--- returning status code 412
}
else {
print("URL Session Task Failed: %@", error!.localizedDescription);
}
})
task.resume()
session.finishTasksAndInvalidate()
}
响应正文为:
{
"error":{
"errors":[
{
"domain":"global",
"reason":"conditionNotMet",
"message":"Precondition Failed",
"locationType":"header",
"location":"If-Match"
}
],
"code":412,
"message":"Precondition Failed"
}
}
奇怪的事情。我使用Postman和PAW进行了相同的DELETE请求,并成功,返回状态代码204。此外,在单个事件或重复出现的单个事件中,我的删除请求似乎运行良好。
有人对此事有经验吗?
答案 0 :(得分:0)
所以实际上发生了什么,就是添加了一个“ If-None-Match”标头,该标头在调试请求对象时不会显示。我必须使用(查尔斯)代理审核该请求才能看到它。
覆盖此标头字段似乎已解决了此问题。