【发布时间】:2018-02-13 17:25:11
【问题描述】:
我想在 ios 应用程序中将手机号码和密码发送到服务器。后端团队提供了如下图所示的邮递员 API。
作为表单数据发送成功
以下 Swift URL 请求失败,我在这里做错了什么?
func sendReq() {
let Url = String(format: "http://xxxxxxx/mobile/request_otp")
guard let serviceUrl = URL(string: Url) else { return }
let parameterDictionary = ["mobile_number" : "xxxxxxxxxx", "password" : "12345678"]
var request = URLRequest(url: serviceUrl)
request.httpMethod = "POST"
request.cachePolicy = .useProtocolCachePolicy
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
// params dict as data
guard let httpBody = try? JSONSerialization.data(withJSONObject: parameterDictionary, options: []) else {
return
}
request.httpBody = httpBody
// session
let session = URLSession.shared
//data task
session.dataTask(with: request) { (data, response, error) in
if let response = response {
print(response)
}
if let data = data {
do {
let json = try JSONSerialization.jsonObject(with: data, options: [])
print(json)
}
catch {
print(error)
}
}
}.resume()
}
但是上面的 API 调用会抛出类似的错误
{
error = TRUE;
message = "All fields Required!";
}
【问题讨论】:
-
(params as! Data)...你是如何创建params的?那是什么? -
{"mobile_number":"xxxxxxxxxx","password":"12345678"} 使用 jsonEncoder.encode() 转换为数据
-
您不能让您的“服务器团队”在服务器日志中查找确切的错误原因,即请求中缺少哪个字段吗?
-
您在请求标头中的
Content-Length到底是在哪里设置的?