我正在使用Alamofire在我的快捷应用中发出请求。我的所有请求在2天前都在工作,现在只有其中一部分在工作。我的API正常运行,我使用Postman并在Android版本的应用中获得了正确的响应。
这是请求代码
let headers: HTTPHeaders = [
"Authorization": "\(token)",
"Accept": "application/json"
]
Alamofire.request(url, method: .get, parameters: nil, encoding: URLEncoding.default, headers: headers).responseJSON(completionHandler: { (response) in
deactivateActivityIndicator()
if let json = response.result.value {
log.debug("User json: \(json)")
let user = Mapper<User>().map(JSON: JSON(json).dictionaryObject!)
self.delegate?.getRequestSuccessful(user!)
}
else{
self.delegate?.requestError("Error occurred getting response from API")
}
})
我从API请求的JSON如下所示:
{
"id": "1",
"email": "test@test.com",
"first_name": "Test",
"last_name": "Tester",
"role": 1,
"verified": true,
"edited": "2018-08-14T11:52:31.900Z",
"created": "2018-08-14T08:02:59.251Z"
}
我不断收到401
响应,如下所示:
responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(Error Domain = NSCocoaErrorDomain代码= 3840“字符周围的值无效 0。“ UserInfo = {NSDebugDescription =字符0周围的值无效。}))
我曾尝试将responseJSON
更改为responseString
,就像在问题here中一样,但是并没有解决问题
答案 0 :(得分:0)
请尝试使用JSONEncoding.default。替换现有代码中的URLEncoding.default
答案 1 :(得分:0)
经过几天的搜索和调试,我设法解决了该问题。输入Alamofire请求的URL时,我使用的是$scope
格式的URL。我在末尾添加了一个额外的斜杠,如下所示:https:///www.test.com
根据我发现的内容,请求将被重定向到正确的URL,并且标头未随请求一起发送。因此解释了401响应(Unauahtorized)