Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Alamofire-具有自定义标头的Rest API调用_Ios_Swift_Alamofire - Fatal编程技术网

Ios Alamofire-具有自定义标头的Rest API调用

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

我在和Swift+Alamofire合作。我正在使用一个RESTAPI,它以JSON格式返回数据,我已经在RESTAPI测试工具(即PostMan)中对其进行了测试。这是它的快照,工作正常

在这个Get请求中,唯一的一件事就是授权头。但是在Swift+Alamofire中,授权头不起作用。下面是代码片段

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的响应类映射,您可以使用CodableObjectMapper

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)位于
打印(“响应:\(响应)”)
}