マルチバイト文字を含むURLをエンコードしないでHTTP通信しようとすると落ちる
表題通り、エンコードしないでAlamofireでGETで呼び出すと落ちる。(Alamofireに限らない。)
エラーメッセージが不親切ですぐわかんなかった。
突然の死でした。
環境
- Swift 2.2
- Xcode 7.3
- Alamofire 3.3
現象 / ソースコード
エラー
fatal error: unexpectedly found nil while unwrapping an Optional value
ソースコード
エラー
fatal error: unexpectedly found nil while unwrapping an Optional value
ソースコード
以下メソッドに渡すurlを日本語等のマルチバイト文字を含むものにすると落ちる。
hoge.swift
func send(url : String){
Alamofire.request(.GET, url)
.responseJSON { (response) -> Void in
guard let object = response.result.value else {
return
}
}
}
サンプル呼び出し
hoge.swift
let url = "https://www.google.co.jp/#safe=off&q=あいふぉんクレイドル"
self.send(url)
対策後コード
hoge.swift
func send(url : String){
// これ追加👇
let encodedUrl = url.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!
Alamofire.request(.GET, encodedUrl)
.responseJSON { (response) -> Void in
guard let object = response.result.value else {
return
}
}
}
原因/参考
hoge.swift
func send(url : String){
// これ追加👇
let encodedUrl = url.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!
Alamofire.request(.GET, encodedUrl)
.responseJSON { (response) -> Void in
guard let object = response.result.value else {
return
}
}
}
Alamofire crashes when url param contains special character (umlaut) #1195
iOSでパーセントエンコード(Swift)
Author And Source
この問題について(マルチバイト文字を含むURLをエンコードしないでHTTP通信しようとすると落ちる), 我々は、より多くの情報をここで見つけました https://qiita.com/YKEI_mrn/items/9bab675cfa8a5c415309著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .