Alamofire: request.responseString-stringSerializationFailed(Unicode(UTF-8))

作成日 2017年12月26日  ·  3コメント  ·  ソース: Alamofire/Alamofire

* Alamofireバージョン:4.4.0* Xcodeバージョン:8.3.2
* Swiftバージョン:Apple Swiftバージョン3.1(swiftlang-802.0.53 clang-802.0.42)* Alamofireを実行しているプラ​​ットフォーム:任意のシミュレーター(xcode 8.3.2)

こんにちは、誰かが私にこれを理解する手を差し伸べることができますか? ありがとう。

Alamofireで2つの異なるhtmlリクエストを実行しています。どちらもブラウザを使用して正常に動作し、同じhtmlソースを返しますが、Alamofireを使用すると、そのうちの1つが文字列へのデータ応答のデコードに失敗します。
URLのわずかな違いは、2番目のURLの末尾に「n」が付いていることに注意してください。

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)
    }
}

結果:

  • urlString1はhtml文字列を正常にフェッチします
  • urlString2はエラーを出力します:
    Alamofire.AFError.responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.stringSerializationFailed(Unicode (UTF-8)))
support

最も参考になるコメント

@ghost私は同じ問題に遭遇します

.responseDataString(decoding:as:)を使用して解決しました

    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)
    }

String(data:encoding :)はString(decoding:as :)よりも高速であることに注意してください。

参照:
https://bugs.swift.org/browse/SR-6261

全てのコメント3件

エラーの説明にあるように、Alamofireは文字列をUTF-8として解析できませんでした(デフォルトでdictionary.comが返すものであるにもかかわらず)。 それらの応答が実際に有効なUTF-8文字列であるかどうかを調査する必要があります。 サイトが適切な型を返すことを期待できない場合は、他のエンコーディングにフォールバックできる独自の文字列パーサーを作成することをお勧めします。

@ghost私は同じ問題に遭遇します

.responseDataString(decoding:as:)を使用して解決しました

    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)
    }

String(data:encoding :)はString(decoding:as :)よりも高速であることに注意してください。

参照:
https://bugs.swift.org/browse/SR-6261

@ gaplo917
私の日を救ってくれてありがとう;-)

このページは役に立ちましたか?
0 / 5 - 0 評価