2016年7月27日水曜日

URLConnection(HttpURLConnection)と向き合おう

オフィス狛 技術部です。

 ApacheHTTPClient がAndroid 6.0で廃止されてからもう少しで1年ですね。

「useLibrary 'org.apache.http.legacy'」がいまだに残る Gradle。
取り消し線を表示し「早くこのコードを消してくれ」と訴えてくる AndroidStudio。

Android 7.0も出そうなので、そろそろ向き合おうと思います。
ApacheHTTPClitentを使ったHTTP通信」から「URLConnection(HttpURLConnection)を使ったHTTP通信」への乗り換えについて複数回に分けて書きます。

今回は ApacheHTTPClitent がしていてくれたことの確認を行います。
そもそも、ApacheHTTPClitent はHTTP通信を行う上で必要な機能を提供してくれるクラスです。
下記はその機能の一部です。
  • HTTPリクエストのリクエストデータ(ヘッダーやボディ)の設定方法の提供
  • HTTPリクエストの実行
  • レスポンスの取り扱い
  • クッキーの管理
  • 認証
  • コネクションの管理

一部機能を挙げましたが、多機能すぎるため保守性・拡張性・互換性に問題が出始めたようです。
これらの問題を解決するために軽量で柔軟な URLConnection が登場したわけです。

では HttpURLConnection は何をしてくれるのかというと、「HTTP通信に必要最低限の機能」を提供してくれます。
  • HTTPリクエストのリクエストデータ(ヘッダー)の設定方法の提供
  • HTTPリクエストの実行
  • 認証
  • コネクションの管理

一部機能を挙げましたが、特に「リクエストデータ(ボディ)の設定」と「レスポンスデータの解析」は自前で実装することになります。
 ApacheHTTPClitent が覆い隠していたリクエストとレスポンスの実装がプログラマーに提供されたような印象を受けます。

次回以降はサンプルコードを提示し、要点を説明していきます。
目次は下記のとおりです。
  • GETメソッドでデータを取得する。
  • POSTメソッドでフォーム情報(application/x-www-form-urlencoded)を送信する。
  • POSTメソッドでJSONを送信する。
  • POSTメソッドでファイルを送信する。
  • POSTメソッドでマルチパート情報(multipart/form-data)を送信する。
  • レスポンスの解析
  • Cookieの管理方法

今回のまとめ

  • ApacheHTTPClitent から URLConnectionへの乗り換えは必須です。
  • URLConnection ではリクエストデータとレスポンスデータに対する操作は、自前で実装する必要があります。

0 件のコメント:

コメントを投稿