Alamofire: request.responseString - stringSerializationFailed (рдпреВрдирд┐рдХреЛрдб (UTF-8))

рдХреЛ рдирд┐рд░реНрдорд┐рдд 26 рджрд┐рд╕ре░ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Alamofire/Alamofire

*рдЕрд▓рд╛рдореЛрдлрд╛рдпрд░ рд╕рдВрд╕реНрдХрд░рдг: 4.4.0* рдПрдХреНрд╕рдХреЛрдб рд╕рдВрд╕реНрдХрд░рдг: 8.3.2
*рд╕реНрд╡рд┐рдлреНрдЯ рд╡рд░реНрдЬрди: рдПрдкрд▓ рд╕реНрд╡рд┐рдлреНрдЯ рд╡рд░реНрдЬрди 3.1 (рд╕реНрд╡рд┐рдлреНрдЯрд▓реИрдВрдЧ-802.0.53 рдХреНрд▓реИрдВрдЧ-802.0.42)* рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо (рдУрдВ) рдЕрд▓рд╛рдореЛрдлрд╛рдпрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ: рдХреЛрдИ рднреА рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ (xcode 8.3.2)

рдирдорд╕реНрддреЗ, рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВ рдЕрд▓рд╛рдореЛрдлрд╛рдпрд░ рдХреЗ рд╕рд╛рде рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдЪрдЯреАрдПрдордПрд▓ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рджреЛрдиреЛрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╣реА рдПрдЪрдЯреАрдПрдордПрд▓ рд╕реНрд░реЛрдд рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдЕрд▓рд╛рдореЛрдлрд╛рдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдбреАрдХреЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ url рдореЗрдВ рдЫреЛрдЯрд╛ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рджреВрд╕рд░реЗ 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)))

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@ рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ

рдореИрдВрдиреЗ .responseData рдФрд░ String(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)
    }

рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ (рдбреЗрдЯрд╛: рдПрдиреНрдХреЛрдбрд┐рдВрдЧ :) рддреЗрдЬ рд╣реИ рддреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ (рдбрд┐рдХреЛрдбрд┐рдВрдЧ: as :)

рд╕рдВрджрд░реНрдн:
https://bugs.swift.org/browse/SR-6261

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЬреИрд╕реЗ рддреНрд░реБрдЯрд┐ рд╡рд┐рд╡рд░рдг рдХрд╣рддрд╛ рд╣реИ, Alamofire рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ UTF-8 рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ (рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ dictionary.com рд░рд┐рдЯрд░реНрди рдХреНрдпрд╛ рд╣реИ)ред рдЖрдкрдХреЛ рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЙрдирдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдорд╛рдиреНрдп UTF-8 рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред рдпрджрд┐ рд╕рд╛рдЗрдЯ рдХреЛ рдЙрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд┐рдирд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд░реНрд╕рд░ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдЬреЛ рдЕрдиреНрдп рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддрд╛ рд╣реИред

@ рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ

рдореИрдВрдиреЗ .responseData рдФрд░ String(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)
    }

рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ (рдбреЗрдЯрд╛: рдПрдиреНрдХреЛрдбрд┐рдВрдЧ :) рддреЗрдЬ рд╣реИ рддреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ (рдбрд┐рдХреЛрдбрд┐рдВрдЧ: as :)

рд╕рдВрджрд░реНрдн:
https://bugs.swift.org/browse/SR-6261

@Gaplo917
рдзрдиреНрдпрд╡рд╛рдж рдореЗрд░рд╛ рджрд┐рди рдмрдЪрд╛рдпрд╛ ;-)

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

simonliotier picture simonliotier  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

noear picture noear  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

badrinathvm picture badrinathvm  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Tulleb picture Tulleb  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

yokesharun picture yokesharun  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ