【发布时间】:2018-02-01 18:35:13
【问题描述】:
当我想在请求中调用此方法时,我遇到了这个问题。它似乎正在替换 %3f 而不是 swift4 中的 ?
它是我的 ApiRouter
struct ApiRouter {
enum Router: URLRequestConvertible {
case getAllPlcae(id: Int, paseSize: Int, pageNumber: Int, countryID: Int, cityID: Int)
var method: Alamofire.HTTPMethod {
switch self {
case .getAllPlcae:
return .get
}
}
func asURLRequest() throws -> URLRequest {
let result: (path: String, parameters: [String: AnyObject]?) = {
switch self {
case .getAllPlcae(let id, let pageSize, let pageNumber, let countryID, let cityID):
return("Location?textToSearch=&tagIds=&id=\(id)&pageSize=\(pageSize)&pageNumber=\(pageNumber)&countryID=\(countryID)&cityID=\(cityID)",nil)
}
}()
// MARK: - Set HTTP Header Field
let url = URL(string: Constants.ApiConstants.baseURLString)!
var urlRequest = URLRequest(url: url.appendingPathComponent(result.path))
urlRequest.httpMethod = method.rawValue
if let token = User.getToken() {
urlRequest.setValue(token, forHTTPHeaderField: "Authorization")
}
let encoding = try Alamofire.URLEncoding.default.encode(urlRequest, with: result.parameters)
return encoding
}
}}
当我调用这个请求时,就像 down 一样
Alamofire.request(ApiRouter.Router.getAllPlcae(id: 0, paseSize: 10, pageNumber: 1, countryID: 0, cityID: 0)).responseArray { (response: DataResponse<[Place]>) in }
这是我的网址请求
Location%3FtextToSearch=&tagIds=&id=0&pageSize=10&pageNumber=1&countryID=0&cityID=0
它似乎正在替换 %3f 而不是 ?
如何解决?
【问题讨论】:
-
您不应该将查询参数作为路径的一部分,您应该返回一个包含参数的字典作为该元组中的第二个值。
-
@dan 怎么样?你能给我一个示例代码吗?
-
你需要创建你的url字符串并设置URLEncoding如stackoverflow.com/a/51894621/3110023
-
您需要通过
parameters字典传递查询字符串KVs,而不是尝试手动将其破解到路径中。
标签: string replace request alamofire swift4