i want use application/x-www-form-urlencoded body Parameters, but it doesn`t work
Closed this issue · 4 comments
PaPazhao commented
func send() {
let request = DMLoginOutRequest(type: "login", userName: "15311444509", psw: "5888913")
Session.send(request) { (sesult) in
print(sesult)
}
}
struct DMLoginOutRequest: Request {
let type: String
let userName: String
let psw: String
typealias Response = UserInfo
var method: HTTPMethod {
return .post
}
var path: String {
return "/v2/auth/login"
}
func response(from object: Any, urlResponse: HTTPURLResponse) throws -> UserInfo {
return try UserInfo(object: object)
}
var parameters: Any? {
return [
"password" : psw,
"username" : userName]
}
}
extension DMLoginOutRequest {
var headerFields: [String : String] {
return [
"Content-Type" : "application/x-www-form-urlencoded; charset=utf-8",
"Accept-Language" : "zh-Hans-CN;q=1.0",
"Accept-Encoding" : "gzip;q=1.0, compress;q=0.5"
]
}
var bodyParameters: BodyParameters {
return FormURLEncodedBodyParameters(formObject: parameters as! [String : Any])
}
}
extension DMLoginOutRequest {
var baseURL: URL {
return URL(string: "http://api.52toys.com")!
}
}
PaPazhao commented
POST /v2/auth/login HTTP/1.1
Host: api.52toys.com
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Connection: keep-alive
Accept: application/json
User-Agent: DM78/1.0 CFNetwork/758.5.3 Darwin/15.6.0
Accept-Language: zh-Hans-CN;q=1.0
Accept-Encoding: gzip;q=1.0, compress;q=0.5
Content-Length: 37
password=5888913&username=15311444509
PaPazhao commented
public extension Request {
public var parameters: Any? {
return nil
}
public var queryParameters: [String: Any]? {
guard let parameters = parameters as? [String: Any], method.prefersQueryParameters else {
return nil
}
return parameters
}
public var bodyParameters: BodyParameters? {
guard let parameters = parameters, !method.prefersQueryParameters else {
return nil
}
return FormURLEncodedBodyParameters(formObject: parameters as! [String : Any])
// return JSONBodyParameters(JSONObject: parameters)
}
public var headerFields: [String: String] {
return [:]
}
public var dataParser: DataParser {
return JSONDataParser(readingOptions: [])
}
public func intercept(urlRequest: URLRequest) throws -> URLRequest {
return urlRequest
}
ishkawa commented
Could you explain how it doesn't work?
HTTP request which you paste looks correct.
ishkawa commented
Just closed this issue now. Feel free to reopen this if anyone still encounters the same issue!