*Alamofire-Version: 4.4.0* Xcode-Version: 8.3.2
*Swift-Version: Apple Swift-Version 3.1 (swiftlang-802.0.53 clang-802.0.42)* Plattform(en), auf denen Alamofire läuft: Jeder Simulator (xcode 8.3.2)
Hallo, könnte mir jemand helfen, das herauszufinden. Vielen Dank.
Ich mache zwei verschiedene HTML-Anfragen mit Alamofire, beide funktionieren mit einem Browser einwandfrei und geben dieselbe HTML-Quelle zurück.
Beachten Sie den kleinen Unterschied in den URLs, dass die zweite URL ein 'n' am Ende hat
let urlString1 = "http://www.dictionary.com/browse/andalusia"
let urlString2 = "http://www.dictionary.com/browse/andalusian"
Alamofire.request(urlString<1 or 2>).responseString { (response) in
switch response.result {
case .success(let value):
// Do something with html string
case .failure(let error):
print(error)
}
}
Ergebnisse:
Alamofire.AFError.responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.stringSerializationFailed(Unicode (UTF-8)))
Wie die Fehlerbeschreibung sagt, konnte Alamofire den String nicht als UTF-8 parsen (obwohl dictionary.com
standardmäßig zurückgibt). Sie sollten untersuchen, ob ihre Antwort tatsächlich eine gültige UTF-8-Zeichenfolge ist. Wenn man sich nicht darauf verlassen kann, dass die Site einen richtigen Typ zurückgibt, möchten Sie vielleicht Ihren eigenen String-Parser schreiben, der auf andere Codierungen zurückgreifen kann.
@ghost Ich habe das gleiche Problem
Ich habe mit .responseData
& String(decoding:as:)
solved gelöst
Alamofire.request(...).responseData { response in
guard let data = response.data else { return }
let utf8Text = String(data: data, encoding: .utf8) ?? String(decoding: data, as: UTF8.self)
}
Beachten Sie, dass String(data:encoding:) schneller ist als String(decoding:as:)
@gaplo917
Danke, du hast mir den Tag gerettet ;-)
Hilfreichster Kommentar
@ghost Ich habe das gleiche Problem
Ich habe mit
.responseData
&String(decoding:as:)
solved gelöstBeachten Sie, dass String(data:encoding:) schneller ist als String(decoding:as:)
Ref:
https://bugs.swift.org/browse/SR-6261