【发布时间】:2016-10-18 16:21:23
【问题描述】:
如何使用 CRUD example 作为基础以 JSON 格式向 Alamofire 请求发送 POST 参数?我无法发送我的参数。
下面是我的路由器生成器:
fileprivate enum Router: URLRequestConvertible {
case login(reqData: Data)
case preferencesIndex()
case preferencesUpdate(parameters: Parameters)
static let baseURLString = "http://test.com"
var method: HTTPMethod {
switch self {
case .login, .preferencesIndex:
return .get
case .preferencesUpdate:
return .post
}
}
var path: String {
switch self {
case .login:
return "/login"
case .preferencesIndex:
return "/preferences/list"
case .preferencesUpdate:
return "/preferences/update"
}
}
// MARK: URLRequestConvertible
func asURLRequest() throws -> URLRequest {
let url = try Router.baseURLString.asURL()
let paramsDefault: Parameters = ["_format" : "json", "_authorization" : "testkey"]
var urlRequest = URLRequest(url: url.appendingPathComponent(path))
urlRequest.httpMethod = method.rawValue
urlRequest = try URLEncoding.default.encode(urlRequest, with: paramsDefault)
switch self {
case .preferencesUpdate(let parameters):
//POST JSON
let data = try JSONSerialization.data(withJSONObject: parameters, options: [])
urlRequest.httpBody = data
urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")
default:
break
}
return urlRequest
}
}
我收到的错误如下:
请求失败并出现错误:由于错误,无法序列化 JSON: 无法读取数据,因为它的格式不正确。
我认为我的问题在于序列化,因为我将参数发送为Parameters 类型...
【问题讨论】:
-
你用的是swift 3吗?
-
是的,我用的是 swift 3
-
我想要:1)生成 url ex:test.com/preferences/… -base url:test.com -path:/preferences/update -query string:_format,授权 2)发送 JSON:[“data” : ["items" : [["name": "items_ids", "value": "1,2,3"]]]] 但是我不能在我的路由器生成器中做这个..
标签: json swift serialization alamofire