Alamofire httpBody 在 swift 5 中显示 500 statusCode
Posted
技术标签:
【中文标题】Alamofire httpBody 在 swift 5 中显示 500 statusCode【英文标题】:Alamofire httpBody show 500 statusCode in swift 5 【发布时间】:2019-12-31 15:52:52 【问题描述】:我正在使用 Alamofire 5。我已将参数放入 httpbody。我已经在 Postman 中运行过它,它运行良好。我的身体参数如下。
"user_id": "user_id",
"username": "user_name",
"password": "pass",
"token": "",
"type_id": 100,
"country_id": 1,
"language_id": 1,
"customer_id": 1,
"parent_user_id": "",
"profile":
我使用下面的代码使用 Alamofire 5 提出请求。这是代码:
func change_password()
let headers: HTTPHeaders = [
"Content-Type": "application/json",
"YumaSession": Global_Variable.globalValue.session_id
]
let parameters:Parameters = [
"user_id": "user_id",
"username": "username",
"password": txtPassword.text!,
"token": "",
"type_id": 100,
"country_id": 1,
"language_id": 1,
"customer_id": 1,
"parent_user_id": "",
"profile": []
]
AF.request( url,method: .put,parameters: parameters,encoding: URLEncoding.httpBody,headers: headers).responseJSON response in
switch response.result
case .success(let responseData):
print("responseData-->",response.response!.statusCode)
case .failure(let error):
print("error--->",error)
以上代码返回 500 状态代码。代码上面有什么问题?
【问题讨论】:
您可以告诉 POSTMAN 在 CURL 中生成等效请求,并使用 Alamofire 中的功能将请求打印为 CURL 之一(参见 ***.com/questions/53637437/alamofire-with-d/…)并比较两个代码。您将能够发现差异。但是URLEncoding.httpBody
,作为 URLEncoded?还是 JSONEncoded?
profile
字段是邮递员正文中的字典和 AF 参数中的数组。服务器是否也在告诉您为什么它在响应正文中返回 500?
@WarrenBurton 如何在个人资料字段中写入?
"profile": [:]
@Larme 谢谢它工作正常
【参考方案1】:
parameters.profile 是用数组文字而不是字典定义的。修正以下代码。
let parameters:Parameters = [
"user_id": "user_id",
"username": "username",
"password": txtPassword.text!,
"token": "",
"type_id": 100,
"country_id": 1,
"language_id": 1,
"customer_id": 1,
"parent_user_id": "",
"profile": [:]
]
【讨论】:
以上是关于Alamofire httpBody 在 swift 5 中显示 500 statusCode的主要内容,如果未能解决你的问题,请参考以下文章
使用 Alamofire 设置 HTTP Headers 和 HTTP Body
使用 Alamofire 在 HTTP Body 中发送数据
Alamofire:这种语法有啥问题? “通话中的额外参数”