Alamofire .POST 编码 (.URL)
Alamofire .POST encoding (.URL)
所以,我正在尝试使用默认选项使用 Alamofire 执行 .POST
请求:
Alamofire.request(.POST, url, parameters: parameters).validate().responseJSON
这个很好用。正如文档所说,参数的默认编码是 .URL
.
现在我正尝试按照本指南改进创建路由器的代码:
https://grokswift.com/router/
最后实现需要手动对参数进行编码。所以,如果默认值有效,我现在在这里使用 .URL
编码,如下所示:
let encoding = Alamofire.ParameterEncoding.URL
let (encodedRequest, _) = encoding.encode(urlRequest, parameters: parameters)
现在请求将无法工作,因为参数显然是以错误的格式发送的。
我很确定 API 可以正常工作,我正在 Postman 中对其进行测试,并且正在使用 form-data
选项发送参数。
提前感谢任何可以帮助我的人!
根据我在 Swift 和 Objective-C 中的经验,当我们使用 POST 发出请求时,不应该要求通过编码传递 URL 除非直到有任何特殊字符或 space 在那里。
如果您正在发出 GET 请求,那么您应该始终通过编码传递 URL。在 POST 中,无论您的参数是什么,都作为表单数据在其自身中传递。没有任何代码需要他们。
因此,在您的代码中,只需从 POST 方法中删除 URL 编码部分。
您也可以将参数编码设置为JSON。
let encoding = Alamofire.ParameterEncoding.JSON
如果它之前工作正常,请仔细检查它是否使用 URL 编码:
let postRequest = Alamofire.request(.POST, url, parameters: parameters)
.validate()
.responseJSON { ... }
debugPrint(postRequest)
这应该会向您显示与您的请求对应的等效 cURL 语句。
然后改变路由器使用.URL
编码,看看debugPrint
输出是否改变。
所以,我正在尝试使用默认选项使用 Alamofire 执行 .POST
请求:
Alamofire.request(.POST, url, parameters: parameters).validate().responseJSON
这个很好用。正如文档所说,参数的默认编码是 .URL
.
现在我正尝试按照本指南改进创建路由器的代码: https://grokswift.com/router/
最后实现需要手动对参数进行编码。所以,如果默认值有效,我现在在这里使用 .URL
编码,如下所示:
let encoding = Alamofire.ParameterEncoding.URL
let (encodedRequest, _) = encoding.encode(urlRequest, parameters: parameters)
现在请求将无法工作,因为参数显然是以错误的格式发送的。
我很确定 API 可以正常工作,我正在 Postman 中对其进行测试,并且正在使用 form-data
选项发送参数。
提前感谢任何可以帮助我的人!
根据我在 Swift 和 Objective-C 中的经验,当我们使用 POST 发出请求时,不应该要求通过编码传递 URL 除非直到有任何特殊字符或 space 在那里。
如果您正在发出 GET 请求,那么您应该始终通过编码传递 URL。在 POST 中,无论您的参数是什么,都作为表单数据在其自身中传递。没有任何代码需要他们。
因此,在您的代码中,只需从 POST 方法中删除 URL 编码部分。
您也可以将参数编码设置为JSON。
let encoding = Alamofire.ParameterEncoding.JSON
如果它之前工作正常,请仔细检查它是否使用 URL 编码:
let postRequest = Alamofire.request(.POST, url, parameters: parameters)
.validate()
.responseJSON { ... }
debugPrint(postRequest)
这应该会向您显示与您的请求对应的等效 cURL 语句。
然后改变路由器使用.URL
编码,看看debugPrint
输出是否改变。