Ios Alamofire-具有自定义标头的Rest API调用
我在和Swift+Alamofire合作。我正在使用一个RESTAPI,它以JSON格式返回数据,我已经在RESTAPI测试工具(即PostMan)中对其进行了测试。这是它的快照,工作正常 在这个Get请求中,唯一的一件事就是授权头。但是在Swift+Alamofire中,授权头不起作用。下面是代码片段Ios Alamofire-具有自定义标头的Rest API调用,ios,swift,alamofire,Ios,Swift,Alamofire,我在和Swift+Alamofire合作。我正在使用一个RESTAPI,它以JSON格式返回数据,我已经在RESTAPI测试工具(即PostMan)中对其进行了测试。这是它的快照,工作正常 在这个Get请求中,唯一的一件事就是授权头。但是在Swift+Alamofire中,授权头不起作用。下面是代码片段 let requestHeaders: HTTPHeaders = [ "Authorization": "bearer " + (Session.user?.acce
let requestHeaders: HTTPHeaders = [
"Authorization": "bearer " + (Session.user?.accessToken!)!
]
Alamofire.request("http://abcabc.com/api/StoreType/Stores", headers: requestHeaders).responseJSON { (response) -> Void in
switch response.result {
case .success:
guard let rawJson = response.result.value as? [String: Any] else {
let serverError = NSError(domain: "Server error", code: (response.response?.statusCode)!, userInfo: ["msg": "Received Malformed data from server"])
errorBlock(serverError)
return
}
let formattedJson = JSON(rawJson)
if (formattedJson["Message"] != JSON.null) {
let serverError = NSError(domain: "Server error", code: (response.response?.statusCode)!, userInfo: ["msg": formattedJson["Message"]])
errorBlock(serverError)
} else { // No error case
Session.storeCategories = StoreCategory.initializeStoreCategoriesWithStores(storeCategoryList: formattedJson)
successBlock(formattedJson)
}
case .failure(let error):
errorBlock(error)
}
}
但我总是犯以下错误。(来自Xcode的快照)
您的响应类型是
[[String:Any]]
而不是[String:Any]
将此更改为:
guard let rawJson = response.result.value as? [[String: Any]] else {
let serverError = NSError(domain: "Server error", code: (response.response?.statusCode)!, userInfo: ["msg": "Received Malformed data from server"])
errorBlock(serverError)
return
}
创建一个类型为
URLRequest
的自定义请求对象,在请求对象中设置URL
、Headers
和RequestType
,然后简单地请求Alamofire
启动此请求
let requestHeaders: [String: String] = [
"Authorization": "bearer " + (Session.user?.accessToken!)!
]
if let url = URL(string: "https://www.example.com/someApiURL") {
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.headerParam = requestHeaders
Alamofire.request(request).responseJSON{ (response) -> Void in
switch response.result {
case .success:
guard let rawJson = response.result.value as? [String: Any] else {
let serverError = NSError(domain: "Server error", code: (response.response?.statusCode)!, userInfo: ["msg": "Received Malformed data from server"])
errorBlock(serverError)
return
}
let formattedJson = JSON(rawJson)
if (formattedJson["Message"] != JSON.null) {
let serverError = NSError(domain: "Server error", code: (response.response?.statusCode)!, userInfo: ["msg": formattedJson["Message"]])
errorBlock(serverError)
} else { // No error case
Session.storeCategories = StoreCategory.initializeStoreCategoriesWithStores(storeCategoryList: formattedJson)
successBlock(formattedJson)
}
case .failure(let error):
errorBlock(error)
}
}
}
试试这个,对于来自json的响应类映射,您可以使用Codable或ObjectMapper
var headers = ["":""]
headers["Authorization"] = "bearer " + (Session.user?.accessToken!)!
Alamofire.request(baseURL + endpoint,headers: headers)
.responseArray { (response: DataResponse<[Model]>) in
print("Response: \(response)")
}
var headers=[“”:“”]
头文件[“授权”]=“承载”+(Session.user?.accessToken!)!
请求(baseURL+端点,头:头)
.responseArray{(响应:DataResponse)位于
打印(“响应:\(响应)”)
}