Swift中如何为URLRequest的httpBody设置null值?
解决URLRequest发送JSON格式null请求体的问题
要让DELETE请求成功发送JSON格式的null请求体,必须同时完成两个关键配置:
- 设置正确的请求头:服务器需要明确请求体的媒体类型,这是解决415错误的核心
- 生成合法的JSON null数据:确保请求体是标准的JSON格式
null
可行代码实现
guard let url = URL(string: "https://my-url.com/other/stuff") else { return nil } var deleteRequest = URLRequest(url: url) deleteRequest.httpMethod = "DELETE" // 核心配置:告知服务器请求体为JSON格式 deleteRequest.setValue("application/json", forHTTPHeaderField: "Content-Type") // 方式1:通过JSONSerialization生成标准null数据 do { deleteRequest.httpBody = try JSONSerialization.data(withJSONObject: NSNull(), options: []) } catch { print("生成null数据失败:\(error)") return nil } // 方式2:直接构造字符串转Data(更简洁) // deleteRequest.httpBody = "null".data(using: .utf8)
之前尝试无效的原因
- 仅设置
httpBody为nil/空Data/空字符串:未提供服务器要求的JSON格式请求体 - 使用
"null".data(using: .utf8)但未设置Content-Type:服务器无法识别请求体的JSON类型,因此返回415错误
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

