gpt4 book ai didi

php - Alamofire 无法将结果识别为 JSON

转载 作者:行者123 更新时间:2023-11-30 12:10:01 25 4
gpt4 key购买 nike

我正在使用 Guzzle 从 PHP 调用公共(public) API。它返回有效的 JSON(在 JSONLint.com 上验证)。然而,当我尝试将其返回到我的 iOS 应用程序时,Alamofire 不喜欢它。我尝试解码 JSON,然后重新编码,但得到相同的结果。我不明白为什么 Alamofire 不接受它。我已经使用 Paw 测试了 Web 服务,它返回一个 content-typeapplication/json 的 JSON 结果。

我得到的错误是:

JSON could not be serialized because of error: The data couldn’t be read because it isn’t in the correct format.

PHP 代码:

$url = "myUrl";
$client = new GuzzleHttp\Client();

$res = $client->get($url, [
'headers' => [
'Authorization' => "Bearer myKey",
'Accept' => 'application/json'
]
]);

header('Content-type: application/json');
$results = $res->getBody();
$this->response($results, 200);

Swift 代码:

let url = serviceUrl + "currentwar"     
let params = [
"clanId" : "\(clanId)",
]

Alamofire.request(url, parameters: params, encoding: URLEncoding.default)
.validate()
.responseJSON { (response) in
switch response.result {
case .success(let data):
self.json = JSON(data)
print(self.json as Any)

// process data

DispatchQueue.main.async(execute: { () -> Void in
// populate view
})

case .failure(let error):
print("An error occurred: \(error.localizedDescription)")
}
}

最佳答案

尝试从 REST 客户端(例如 Postman)检查 API验证结果。由于浏览器可以呈现 HTML 内容,因此您可能无法在浏览器窗口中看到它,但您可以轻松地从页面源 View 中查看它。我总是在 Postman 中检查 API,因为它可以确保服务器端的 API 中没有错误,并且 API 使用者可以轻松使用该 API。

关于php - Alamofire 无法将结果识别为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46188673/

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