Ich rufe eine öffentliche API von PHP mit Guzzle. Es gibt gültiges JSON (validiert auf JSONLint.com) zurück. Wenn ich jedoch versuche, das in meine iOS-App zurückzuliefern, gefällt es Alamofire nicht. Ich habe versucht, den JSON zu dekodieren und dann neu zu kodieren, aber ich bekomme das gleiche Ergebnis. Ich kann nicht herausfinden, warum Alamofire es nicht akzeptieren wird. Ich habe den Webdienst mit Paw getestet und gibt ein JSON-Ergebnis mit content-type
von application/json
zurück.Alamofire erkennt das Ergebnis nicht als JSON
Der Fehler, den ich bekommen ist:
JSON could not be serialized because of error: The data couldn’t be read because it isn’t in the correct format.
PHP-Code:
$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 Code:
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)")
}
}
Versuchen Sie, 'responseString' anstelle von' responseJSON' zu verwenden und konvertieren Sie die Zeichenfolge in ein JSON und parsen. –
@BadhanGanesh, habe ich das versucht, aber kann nichts mit der resultierenden Zeichenfolge zu tun scheinen. Die Konvertierung in JSON gibt nur null zurück. – Lastmboy