Alamofire 4.3 无法发送 JSON 请求
Posted
技术标签:
【中文标题】Alamofire 4.3 无法发送 JSON 请求【英文标题】:Alamofire 4.3 can't send JSON request 【发布时间】:2017-01-22 15:06:20 【问题描述】:我正在尝试使用 Alamofire 发送 JSON 请求,但它不能作为 JSON 请求工作,这是我的 JSON:
"ClientID":"55050","AdminId":"myemail","Password":"123"
content-type → application/json; charset=utf-8
这是我的代码:
import Alamofire
func doLogin(username:String ,password:String)
let parameters = ["ClientID":"55050" , "AdminId":username,"Password":password]
Alamofire.request("myurl.com", method: .post, parameters: parameters, encoding: JSONEncoding(options: []) ).responseJSON(completionHandler:
response in
print(response)
)
这是我得到的回应
FAILURE: responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 3." UserInfo=NSDebugDescription=Invalid value around character 3.))
【问题讨论】:
根据错误,问题出在您服务器的响应上。 我用邮递员试了一下,效果很好 【参考方案1】:通过阅读文档,我只需将标头设置为 application/json
所以我添加了额外的参数头:
let headers: HTTPHeaders = [
"Authorization": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
"Accept": "application/json"
]
Alamofire.request(ApiKeys().login, method : .post , parameters : parameters, encoding: JSONEncoding.default , headers: headers).responseJSON response in
现在它工作得很好,感谢大家的帮助:)
【讨论】:
【参考方案2】:看来您的请求中一定遗漏了标头。所以,一直没有回应。
您的标题必须是字典 [String: String]
。
let header = ["Content-Type" : "application/json"]
您的示例请求应该是:
Alamofire.request(getCategoryPath, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: header)
.responseJSON response in
guard response.result.error == nil else
print(response.result.error!)
print(response.result.value)
【讨论】:
以上是关于Alamofire 4.3 无法发送 JSON 请求的主要内容,如果未能解决你的问题,请参考以下文章
试图在 alamofire 中发送 json 对象,但它在 json 数组中