gpt4 book ai didi

ios - 如何在 Alamofire 中将正文类型设置为 JSON?

转载 作者:行者123 更新时间:2023-11-28 06:42:03 26 4
gpt4 key购买 nike

我在网上与来自不同项目的不同人员一起工作,他们负责后端 API 网络服务。通常我在发送和接收 JSON 时没有问题,但是这次,我似乎无法将 JSON 正确发送到服务器。

平时我都是用Alamofire来收发JSON消息,一般的调用是这样的:

let param = populateParamWithDictionary();
let url = "https://www.example.com";

Alamofire.request(.POST, url, parameters: param, headers: nil)
.responseJSON { response in {
// take care of response here
}

但是这次,我得到了后端程序员要求我使用 OAuth v2 的项目。所以,假设我开发了一个函数,它已经负责获取 access_token 字符串。函数现在变成这样:

let param = populateParamWithDictionary();
let url = "https://www.example.com";
let headers : Dictionary<String, String> = [
"Content-Type":"application/json",
"Authorization":"Bearer \(access_token)"
];

Alamofire.request(.POST, url, parameters: param, headers: headers)
.responseJSON { response in {
// take care of response here
}

但是我得到的不是结果,而是 400 错误请求错误。我什至也试过这个:

let param = populateParamWithDictionary();
let url = "https://www.example.com";
let headers : Dictionary<String, String> = [
"Content-Type":"application/json",
"Authorization":"Bearer \(access_token)"
];

Alamofire.request(.POST, url, parameters: param, encoding: ParameterEncoding.JSON, headers: headers)
.responseJSON { response in {
// take care of response here
}

但结果更糟。这是我打印响应时得到的。

FAILURE: Error Domain=NSURLErrorDomain Code=-1017 "cannot parse response" UserInfo={NSUnderlyingError=0x7fbb505788f0 {Error Domain=kCFErrorDomainCFNetwork Code=-1017 "(null)" UserInfo={_kCFStreamErrorCodeKey=-1, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=http://lfapp.learnflux.net/v1/me, NSErrorFailingURLKey=http://lfapp.learnflux.net/v1/me, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-1, NSLocalizedDescription=cannot parse response}

但是如果我使用 REST 客户端,通过将 header 设置为具有身份验证和 Content-Type,并将参数写入为纯内容,例如在正文内容中使用纯 API。

我该如何解决这个问题?

编辑:带有访问 token 的部分已经很清楚了。访问 token 有效。如果 API 不需要任何参数,我可以成功调用 API(可能是因为在服务器上,代码根本不去检查或验证主体,因为它不需要那里的任何东西,因此没有错误上调)。问题是当我发出需要任何参数的请求时。

最佳答案

您遇到的错误可能是因为请求中的encoding: ParameterEncoding.JSON。尝试将其更改为 encoding: .URLEncodedInURL。如果这对您没有帮助,请将您的参数添加到问题中,如果您请求获取 token ,请执行以下操作:

if let access_token = json["access_token"]!{
// Make the request here when you know that you have your token
}

关于ios - 如何在 Alamofire 中将正文类型设置为 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37676079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com