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

问题描述 投票:-4回答:3
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)

swift alamofire
3个回答
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架构的类型。


0
投票

对于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


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)
© www.soinside.com 2019 - 2024. All rights reserved.