Alamofireでリダイレクトして欲しくない
公開日 2015-04-05
Alamofire v1.2.0において、この記事で言及しているプルリクエスト相当のコードがマージ追加されました。よって、この記事自体がdeprecatedです。そしてAlamofireでリダイレクトさせたくない場合は以下のコードで済みました。
以下古い記事
Alamofire(v1.1.4)でHTTPステータスコードに従ってリダイレクトして欲しくないというレアケースかもしれない事態があって、こいつをどうするかという話です。
リダイレクト処理の実装サンプルは公式のドキュメントにあって、NSURLSession
の場合 URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:
をdelegateで実装すればよくて、リダレクトさせたくない場合は前述のとても長いメソッドのcompleteHandlerでnil
を返せばいいみたい。例えば以下のようなコード。
Alamofireのソースコードを眺めると、Alamofire.Manager.delegate
がprivateに設定されている。ソースを触る必要があるかなと思案していたら、pull requestにprivateなメソッド、プロパティをpublicにして外側からいじれるようにしているのが上がっていた。これを使うと以下のように書ける。
cocoapodsでこのpull requestを使いたい場合はリポジトリとcommitを指定すればOKでした。
pod 'Alamofire', :git => 'https://github.com/jhersh/Alamofire.git', :commit => 'bbdee79eefff2fc4f57f392f6494473538850fae'
pull requestが取り込まれたり、別の実装方法が採用されるまでは、当分はこれでOK。