Alamofire 4.4.0:在呼叫额外的参数为“方法”:不知道什么是投掷的错误
问题描述:
我有一个迅速要求alamofire和我不知道为什么它是扔Extra Argument 'Method' in Call
:Alamofire 4.4.0:在呼叫额外的参数为“方法”:不知道什么是投掷的错误
Alamofire.request(
URL(string: "https://api.io"),
method: .post,
parameters: [
"grant_type": "client_credentials",
"client_id": "user00941",
"client_secret": "ILGddu8y8g7qW"
],
encoding: .urlEncodedInURL
).response {
request, response, data, error in
let json = JSON(data: data!)
print("OAuth 2 token obtained from API: \(json["access_token"])")
let token = "Bearer \(json["access_token"].stringValue)"
}
我一直看着各种其他帖子,但似乎无法找到一个适合我的代码的解决方案。
答
与your original code的问题是,你正在使用的argument labelurl
即使Alamofire.request
function signature省去了它:
public func request(
_ url: URLConvertible,
method: HTTPMethod = .get,
parameters: Parameters? = nil,
encoding: ParameterEncoding = URLEncoding.default,
headers: HTTPHeaders? = nil)
-> DataRequest
删除url:
从您的函数调用会照顾认为错误的,但斯威夫特应该再提醒你一个“可选类型的URL值”? [不]未打开。“虽然你可以使用forced unwrapping提取网址的价值,我会建议使用optional binding代替:
if let url = URL(string: "https://api.io") {
Alamofire.request(
URL(string: "https://api.io"),
method: .post,
parameters: [
"grant_type": "client_credentials",
"client_id": "user00941",
"client_secret": "ILGddu8y8g7qW"
],
encoding: .urlEncodedInURL
).response {
request, response, data, error in
let json = JSON(data: data!)
print("OAuth 2 token obtained from API: \(json["access_token"])")
let token = "Bearer \(json["access_token"].stringValue)"
}
}
或者,你可以使用一个guard
声明通过您的代码,以保持一个Golden Path:
guard let url = URL(string: "https://api.io") else {
return
}
答
此代码有几个错误。编码参数需要设置为JSONEncoding.default
而不是.urlEncodedInURL
。
除此之外,request, response, data, error in
需要更改为response in
。要获取数据和错误使用response.data
和response.error
。
感谢您的帮助,但是这并没有工作.. :( –
你现在得到一个不同的错误 –
不......一样的:?在呼叫 –