*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๋ก ๋ ๊ฐ์ง ๋ค๋ฅธ html ์์ฒญ์ ์ํํ๊ณ ์์ต๋๋ค. ๋ ๋ค ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋๋ก ์๋ํ๊ณ ๋์ผํ html ์์ค๋ฅผ ๋ฐํํ์ง๋ง Alamofire๋ฅผ ์ฌ์ฉํ๋ฉด ๊ทธ ์ค ํ๋๊ฐ ๋ฌธ์์ด์ ๋ํ ๋ฐ์ดํฐ ์๋ต์ ๋์ฝ๋ฉํ์ง ๋ชปํฉ๋๋ค.
ํ 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)
}
}
๊ฒฐ๊ณผ:
Alamofire.AFError.responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.stringSerializationFailed(Unicode (UTF-8)))
์ค๋ฅ ์ค๋ช
์์ ์ ์ ์๋ฏ์ด Alamofire๋ ๋ฌธ์์ด์ UTF-8๋ก ๊ตฌ๋ฌธ ๋ถ์ํ ์ ์์ต๋๋ค( dictionary.com
๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐํํ๋
@ghost ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
.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)
}
String(data:encoding:)์ด String(decoding:as:)๋ณด๋ค ๋น ๋ฆ ๋๋ค.
@gaplo917
๋๋ถ์ ํ๋ฃจ๋ฅผ ๊ตฌํ์ต๋๋ค ;-)
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@ghost ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
.responseData
&String(decoding:as:)
๋ฅผ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ์ต๋๋ค.String(data:encoding:)์ด String(decoding:as:)๋ณด๋ค ๋น ๋ฆ ๋๋ค.
์ฐธ์กฐ:
https://bugs.swift.org/browse/SR-6261