ios - Swift Post 请求 - JSON 正文为空
问题描述
我正在尝试基于 REST 服务器 API 执行 POST 请求。
每次我执行代码时,服务器都不会收到发送的正文。服务器收到如下所示的正文:{}
请求中使用的结构如下所示:
struct CreateUser: Codable {
let first_name: String
let email: String
let password: String
}
请求按如下方式完成:
let userToRegister = CreateUser(firstName: "Max", email: "max.mustermann@gmail.com", password: "SECRET_PASSWORD")
let str = API_ENDPOINT
var request : URLRequest = URLRequest(url: URL(string: str)!)
let encoder = JSONEncoder()
let jsonData = try? encoder.encode(userToRegister)
request.httpBody = jsonData
request.httpMethod = "POST"
return URLSession.shared.dataTask(with: request, completionHandler: {(data,response,error) in
DispatchQueue.main.async {
if let httpResponse = response as? HTTPURLResponse {
if httpResponse.statusCode == 200 {
//Code for successful request
} else {
//Code for failure in request
}
}
}
})
解决方案
我已经解决了这个问题。您必须添加以下行:
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("application/json", forHTTPHeaderField: "Accept")
推荐阅读
- authentication - 需要对(几乎)每个使用 ServiceStack 的请求进行身份验证
- python - Python 客户端通过 Nextcloud 上的 OAuth2 访问 CalDAV
- javascript - 使用鼠标从图像中选择一些牙齿
- angular - Angular 5 - ng 测试不工作
- css - 自动调整设置为任何移动设备背景的图像大小
- android - Selenium / Appium 1.7.2 测试可在 Android 5.1 上运行,但不能在 Android 8.0 上运行
- multithreading - 具有工作窃取功能的可扩展线程池
- hibernate - 如何使用 Spring Data/JPA/Hibernate 在 MySql 中插入和删除带有整数 Ids/Keys 参数数组的行?
- eclipse - 在 Eclipse RCPTT 中使用 foreach 或 regex 进行验证
- php - 使用 if 语句无效使用组函数