使用 Alamofire 获得空响应
Getting null response using Alamofire
{
"vUserList": [
{
"firstName": "Kate",
"lastName": "Bell",
"email": "katebell@mac.com"
},
{
"lastName": "Higgins",
"firstName": "Daniel",
"email": "dhiggins@mac.com"
},
{
"email": "JohnAppleseed@mac.com",
"firstName": "John",
"lastName": "Appleseed"
},
{
"lastName": "Haro",
"firstName": "Anna",
"email": "annaharo@mac.com"
},
{
"email": "hankzakroff@mac.com",
"firstName": "Hank",
"lastName": "Zakroff"
}
]
}
这是我需要发送给服务器的请求参数。
func getContactsParameters() -> [String : Any] {
return [Keys.vUserList : arrContacts]
}
var headers = [
Keys.XAPIKEY: "5dik8fo5yecc25bfcc562724dd674bde5fh5ju8y"
]
Alamofire.request("urlString", method: .post, parameters: getContactsParameters(), encoding: JSONEncoding.default, headers: headers).responseJSON { response in
print(response)
}
getContactsParameters() 控制台日志如下,
作为回应,我得到的成功代码为 Null。
我和后端人员谈过,他们说,如果我没有收到这个密钥 "vUserList" 那么你可能会得到空响应。但是,我仔细检查了拼写和所有内容。
另一种情况是,他们说如果我们没有得到正确的请求 json 那么你可能会得到空响应。
我尝试了很多不同的解决方案,其中 none 个有效。 :(
感谢任何帮助!
这里附上邮递员截图。在邮递员中它工作正常。
检查邮递员后
请在您的请求中添加Header
let headers = [
"Content-Type": "application/x-www-form-urlencoded"
]
如果不行就
URLEncoding()
或 URLEncoding.httpBody
或 URLEncoding.default
在 JSONEncoding.default
的位置
尝试将联系人数组的 JSON 字符串对象传递到 API 参数中。
let arrOfUserList : [[String : AnyObject]] = [
["firstName":"Kate" as AnyObject,"lastName":"Bell" as AnyObject,"email":"katebell@mac.com" as AnyObject],
["firstName":"Daniel" as AnyObject,"lastName":"Higgins" as AnyObject,"email":"dhiggins@mac.com" as AnyObject]
]
do {
let data = try JSONSerialization.data(withJSONObject: arrOfUserList, options: [])
let jsonString = NSString(data: data, encoding: String.Encoding.utf8.rawValue)
if jsonString != nil {
let paramsContact = [Keys.vUserList : jsonString]
//Do your API calling code here
}
} catch {
print(error.localizedDescription)
}
希望对你有用。
{
"vUserList": [
{
"firstName": "Kate",
"lastName": "Bell",
"email": "katebell@mac.com"
},
{
"lastName": "Higgins",
"firstName": "Daniel",
"email": "dhiggins@mac.com"
},
{
"email": "JohnAppleseed@mac.com",
"firstName": "John",
"lastName": "Appleseed"
},
{
"lastName": "Haro",
"firstName": "Anna",
"email": "annaharo@mac.com"
},
{
"email": "hankzakroff@mac.com",
"firstName": "Hank",
"lastName": "Zakroff"
}
]
}
这是我需要发送给服务器的请求参数。
func getContactsParameters() -> [String : Any] {
return [Keys.vUserList : arrContacts]
}
var headers = [
Keys.XAPIKEY: "5dik8fo5yecc25bfcc562724dd674bde5fh5ju8y"
]
Alamofire.request("urlString", method: .post, parameters: getContactsParameters(), encoding: JSONEncoding.default, headers: headers).responseJSON { response in
print(response)
}
getContactsParameters() 控制台日志如下,
我和后端人员谈过,他们说,如果我没有收到这个密钥 "vUserList" 那么你可能会得到空响应。但是,我仔细检查了拼写和所有内容。 另一种情况是,他们说如果我们没有得到正确的请求 json 那么你可能会得到空响应。
我尝试了很多不同的解决方案,其中 none 个有效。 :(
感谢任何帮助!
这里附上邮递员截图。在邮递员中它工作正常。
检查邮递员后
请在您的请求中添加Header
let headers = [
"Content-Type": "application/x-www-form-urlencoded"
]
如果不行就
URLEncoding()
或 URLEncoding.httpBody
或 URLEncoding.default
在 JSONEncoding.default
尝试将联系人数组的 JSON 字符串对象传递到 API 参数中。
let arrOfUserList : [[String : AnyObject]] = [
["firstName":"Kate" as AnyObject,"lastName":"Bell" as AnyObject,"email":"katebell@mac.com" as AnyObject],
["firstName":"Daniel" as AnyObject,"lastName":"Higgins" as AnyObject,"email":"dhiggins@mac.com" as AnyObject]
]
do {
let data = try JSONSerialization.data(withJSONObject: arrOfUserList, options: [])
let jsonString = NSString(data: data, encoding: String.Encoding.utf8.rawValue)
if jsonString != nil {
let paramsContact = [Keys.vUserList : jsonString]
//Do your API calling code here
}
} catch {
print(error.localizedDescription)
}
希望对你有用。