【AFNetworking】iOSの HTTP Client まとめ

Apple-logo1

NSURLSession (NSURLConnection)

NSURLSession(NSURLConnection)はFoundation.Frameworkのクラスです。
NSURLRequestはリクエストオブジェクトを作成しNSURLConnectionでhttp通信を行い, delegateしたクラス内でNSData, NSURLResponseでデータを受け取ります。タイムアウトやキャッシュ, 認証方法などの設定もNSURLRequestで行ったり自前クラスを書くケースが多くありました。
そこで, iOS 7, OS X 10.9 からNSURLSessionというNSURLConnectionクラスの強化版が導入されました。

特徴は以下です。

  • Apple開発の安心感
  • NSURLSessionはNSURLConnectionより簡単で自前クラスを書く手間を省略可
  • バックグラウンドでHTTP通信が可能

AFNetworking

AFNetworkingはデファクトスタンダードと言っても良いライブラリです。
AFNetworking 2.0ではArchitectureが刷新されています。
これはiOS 7,OS X 10.9からNSURLSessionというクラスが追加された影響で, 新たにNSURLSessionをサポートしたAFHTTPSessionManagerクラスが登場しています。

特徴は以下です。

  • HTTPリクエストをブロック形式で記述
  • Multi-Part Requestに対応
  • HTTPリクエスト/レスポンスで様々なフォーマットのシリアライズに対応
  • setUploadProgressBlockで進捗を監視
  • CFNetwork.Framework, SystemConfiguration.framework, Security.frameworkが必要

AFNetworkingは更新頻度も高いプロジェクトです。また, Rocketをサポートしています。

MKNetworkKit

MKNetworkKitはASIHTTPRequestがARC非対応なことから生まれたライブラリで更新頻度も高いプロジェクトです。こちらで詳しく解説されています。

特徴は以下です。

  • GETの自動キャッシュ
  • 自動キューサイジング
  • プログレスを正確に監視可能
  • 複数のparseMethodを用意。(responseData,responseString,responseJSON,responseImage,responseXML)
  • CFNetwork.Framework, SystemConfiguration.framework, Security.frameworkが必要
  • ARC対応

ASIHTTPRequest

ASIHTTPRequestはCFNetwork.Frameworkのラッパーライブラリです。

特徴は以下です。

  • Multi-Part Requestに対応
  • Basic認証やDigest認証, wsse認証に対応
  • 透過キャッシュ機能
  • 依存ライブラリにReachability

ASIHTTPRequestは2年以上更新されていません。必要なフレームワークがAFNetworkingより多く, ARC(Auto Reference Counting)に非対応といった点も注意が必要です。