Ios JSON和Alamofire请求存在问题
我正在尝试发送带有下一个代码的请求:Ios JSON和Alamofire请求存在问题,ios,swift,swift3,alamofire,Ios,Swift,Swift3,Alamofire,我正在尝试发送带有下一个代码的请求: func getLogin(user: String, password: String) { let url = URL(string: "https://www.url.es/api/login")! let parameters: Parameters = [ "usuario" : "\(user)", "clave" : "\(password)"] let headers: HTTPHe
func getLogin(user: String, password: String) {
let url = URL(string: "https://www.url.es/api/login")!
let parameters: Parameters = [
"usuario" : "\(user)",
"clave" : "\(password)"]
let headers: HTTPHeaders = [
"Authorization": "Basic TOKEN"
]
Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: headers).validate()
.responseJSON { response in
print("repuesta")
print(response.request as Any) // original URL request
print(response.response as Any) // URL response
print(response.result.value as Any) // result of response serialization
debugPrint(response)
}
}
但我得到的回应是:
[请求]:https://www.url.es/api/login
[答复]:{URL:https://www.url.es/api/login }{状态代码:401,标题{
“缓存控制”=“无缓存”;
“内容长度”=28;
“内容类型”=“文本/普通;字符集=utf-8”;
日期=“2017年1月16日星期一20:44:14 GMT”;
Expires=“-1”;
Pragma=“无缓存”;
Server=“Microsoft IIS/8.5”;
“Www-Authenticate”=承载;
“X-AspNet-Version”=“4.0.30319”;
“X-Powered-By”=“ASP.NET”;
} }
[数据]:28字节
[结果]:失败:responseValidationFailed(Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(401))
[时间线]:时间线:{“请求开始时间”:506292395.911,“初始响应时间”:506292396.351,“请求完成时间”:506292396.352,“序列化完成时间”:506292396.353,“延迟”:0.440秒,“请求持续时间”:0.441秒,“序列化持续时间”:0.000秒,“总持续时间”:0.441秒}
我正在使用paw http客户端发送请求,并且响应正常
我正在使用swift3、alamofire 4和iOS10。根据您的回复,您的用户名和密码似乎不正确。尝试打印参数字典以确保其正确。有时可能发生的情况是,如果您忘记打开可选值,它仍然会被发送。比如说
let optionalString:String? = "blablabla"
print(optionalString) //prints: Optional(blablabla)
编辑:
我注意到的另一件事是您将编码设置为JSON,但标题内容类型为纯文本。尝试将encoding设置为URLEncoding.default,并确保标头的设置符合服务器的预期。如果将参数定义替换为:let parameters:parameters=[“usuario”:“aaa”,“clave”:“bbb”]响应是相同的。我在请求中包含的参数是有效的登录参数。问题在于headers参数。如果没有此参数,请求调用将运行。