LoginSignup
1
2

More than 5 years have passed since last update.

特定のリクエストの時に、HTTPヘッダーを付与する

Posted at

きっかけ

自分のサイトへのHTTPリクエスト時にHTTPヘッダーに追加情報を載せたかった。

  • アプリのバージョンを付与する
  • 機種名を付与する
  • HTTPS使用時に、認証用トークンを付与して、APIとWebでログインできるようにする

など。

実装したもの

試行錯誤

HTTPリクエストを投げる時によく使うAlamofireとかAFNetworkingとかは比較的簡単にヘッダを付与できる。

ただ、UIWebViewでWebページを表示しているケースでの付与が大変だった。

  • UIWebViewを継承したクラスのloadRequestでごにょごにょ
  • shouldStartLoadWithRequestでごにょごにょ
  • 隠しdelegate使ってごにょごにょ

とか見つけたんだけど全体的に微妙…。

そんな中で見つけたのが

NSURLProtocolを使う

だった。

今回、自分のサイトに設置してあるAPI/Webへのリクエストの時のみ色々付与したかったのでもの凄くマッチした。

応用も効きそうなのでPod化しておいた。

ざっくりな流れ

  • canInitWithRequestで自分の作ったProtocolを適用するか決める
  • startLoadingでリクエストの開始
  • stopLoadingでリクエストの終了
  • 適当なタイミングで、NSURLProtocolClientのメソッドを呼ぶ

詳しいコードは、

で。

まとめ

NSURLProtocolで通信をフックしてごにょごにょしよう!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2