我在Alamofire的get请求中得到403。我从服务器获得的错误消息是:未提供身份验证凭据。 一直在请求中缺少此身份验证标头的问题。我确定我在身份验证标头中发送了访问令牌。 WireShark显示请求是使用auth标头发出的。所以我不确定如何解决这个问题。以下是代码段:
var authenticatedJsonHeaders: [String: String] {
get {
return [
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "\(accessTokenAuthType.rawValue) \(accessTokenString)"
]
}
}
.....
return Alamofire.request(urlString, method:method, parameters: nil, encoding: encoding, headers: authenticatedJsonHeaders)
.response { response in
let currentUserId = ApplicationState.sharedInstance.currentUserManager.getCurrentUserProfileId()
if(currentUserId == 0){ //if current user exists, do not sign the user out!
print("bye user..")
self.signOutUnauthorizedUser(response.response?.statusCode, urlOrSuffix: urlString)
}
self.checkResponseForSharevilleAlertMessage(response.response)
if !hasResponseObject {
if /*
let response = response,*/ (response.response?.statusCode)! < 400 && response.error == nil {
print("success for statuscode: \(response.response?.statusCode) url: \(urlString)")
success(nil)
} else {
sendApiErrorWithUrlIfStatusCodeIsNot204(self.getUrlFromSuffix(urlString), statusCode: response.response?.statusCode)
print("fail for statuscode: \(response.response?.statusCode ?? nil) url: \(self.getUrlFromSuffix(urlString))")
print("request header")
print(response.request ?? "none"
failure(response.error)
}
}
}
.responseJSON { data in
if hasResponseObject {
if let value = data.result.value, data.response != nil && data.response!.statusCode < 400 && data.result.error == nil {
print("success for statuscode: \(data.response!.statusCode) url: \(urlString)")
success(value as AnyObject?)
} else {
sendApiErrorWithUrlIfStatusCodeIsNot204(urlString, statusCode: data.response?.statusCode)
print("fail for statuscode: \(data.response?.statusCode) url: \(urlString)")
failure(data.result.error)
}
}
}
答案 0 :(得分:0)
我认为你应该试试
.validate()
。在request()和response()之间。在您的alamofire请求中
Alamofire.request(urlString, method:method, parameters: nil, encoding: encoding, headers: authenticatedJsonHeaders)
.validate().response { // }