调用中'方法'中的额外参数

时间:2016-09-24 16:58:45

标签: swift alamofire

let playlistUrl = NSURL(string: "https://www.googleapis.com/youtube/v3/playlistItems")!

let params = ["key":API_KEY,"part":"snippet","playlistId":PLAYLIST_ID]

Alamofire.request(playlistUrl, method: HTTPMethod.get, parameters: params, encoding: ParameterEncoding.URL, headers: nil)

1

3 个答案:

答案 0 :(得分:1)

Swift 3.0和Alamofire 4
你做错的事是传递一个NSURL作为第一个参数。不要将其作为URL传递,而是将其作为字符串传递。你也在这里做错了编码。

因此修改后的代码如下: -

Alamofire.request("https://www.googleapis.com/youtube/v3/playlistItems", method: HTTPMethod.get, parameters: params, encoding: JSONEncoding.default, headers: nil)

此处的结果未使用。所以把结果放在一个闭包中。

Alamofire.request("https://www.googleapis.com/youtube/v3/playlistItems", method: HTTPMethod.get, parameters: params, encoding: JSONEncoding.default, headers: nil).responseData { (response:DataResponse<Data>) in

        switch(response.result) {
        case .success(_):
            if let data = response.result.value{
                print(data)
            }
            break

        case .failure(_):
            print(response.result.error)
            break
        }

}

还要检查所需的编码。查看此链接了解更多详情。 https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%204.0%20Migration%20Guide.md#parameter-encoding-protocol

另请查看我发布的答案 Alamofire Swift 3.0 Extra parameter in call

JSONEncoding.defaultURLEncoding.default完全取决于后端制作的API架构的类型。

答案 1 :(得分:0)

for alamofire 4,

Alamofire.request(playlistUrl, method: .get, parameters: params, encoding: JSONEncoding.default)

希望这会对你有所帮助。

有关alamofire访问的最新变化的更多信息,

https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%204.0%20Migration%20Guide.md#parameter-encoding-protocol

答案 2 :(得分:0)

//正确的代码是:

let playlistUrl = NSURL(string: 
"https://www.googleapis.com/youtube/v3/playlistItems")!

let params:Parameters = 
["key":API_KEY,"part":"snippet","playlistId":PLAYLIST_ID]

Alamofire.request(playlistUrl, method: HTTPMethod.get, parameters: 
params, encoding: ParameterEncoding.URL, headers: nil)