1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Android】HttpUrlConnectionを使ってみる

Last updated at Posted at 2021-04-10

【Android】 HttpUrlConnectionを使ってみる

概要

Androidで通信を行う際は、Retrofitがデファクトかなと思いますが、
HttpUrlConnectionを試しに触ってみたものの記録です。

とりあえず公式を読もう

まずは公式ドキュメントを読みました。

ドキュメントを読んで分かったこと

以下は、公式の最初に出てくるサンプルコードです。
やっていることは、URLに対してGETリクエスト実行して、レスポンスを受けとるという処理です。

公式ドキュメントのサンプルをKotlinに変換.kt
val url = URL("http://www.android.com/") 
val urlConnection : HttpUrlConnection = url.openConnection() as HttpUrlConnection
try {
   val inputStream = BufferedInputStream(urlConnection.getInputStream())
   readStream(inputStream) // ※この部分を、コピペしても動かない
 } finally {
   urlConnection.disconnect()
}

まず以下で、URLからURLクラスのオブジェクトを作成して、
作成したURLオブジェクトで、openConnection()を実行します。
openConnection()について
openConnection()によって、リクエスト先とのコネクションを確立します。

サンプルコードの上半分.kt
val url = URL("http://www.android.com/") 
val urlConnection : HttpUrlConnection = url.openConnection() as HttpUrlConnection

次に、レスポンスの処理方法について
まずurlConnection.getInputStreamで、レスポンスのボディを受け取ります。
そして、readStreamは、おそらく自分で定義するメソッド?
なので、そのままコピペしても動かないです。
受け取ったInputStreamをStringなどに変換する処理を実行するものと思われます。

そして、finallyで、urlConnection.disconnect()でリークしないように、コネクションを切断します。

サンプルコードのtry以下.kt
try {
   val inputStream = BufferedInputStream(urlConnection.getInputStream())
   readStream(inputStream)
 } finally {
   urlConnection.disconnect()
}

追加で分かったこと

追加で分かったこと.kt
val url = URL("http://www.android.com/") 
val urlConnection : HttpUrlConnection = url.openConnection() as HttpUrlConnection

urlConnection.setRequestMethod("GET") // "POST"などにすることで、HTTPメソッドを変更できる。デフォルトはGET

urlConnection.connectTimeout(6000) // msで接続のタイムアウトを設定可能

urlConnection.readTimeout(6000) // レスポンスの読み取りタイムアウトを設定

urlConnection.setRequestProperty("Key", "value") // リクエスト ヘッダーにContent-Typeを設定。 
// 例: setRequestProperty("Content-Type", "application/json; charset=utf-8")

感想

公式でもRetrofitが推されているように、HttpUrlConnectionでやる必要はないかなと思いました。

参考

HttpUrlConnection
Androidの通信ライブラリの歴史を振り返る

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?