LoginSignup
0
0

More than 1 year has passed since last update.

Android HTTP通信を行う(HttpUrlConnection)

Posted at

はじめに

学習記録。
Android開発で外部サーバーのCSVファイルやJSONを参照するためにHTTP通信を行う必要があったのでメモとして残す。

前提

アプリをインターネットに接続する許可を与えるためmanifestタグ内に以下2つのタグを追加。

AndroidManifest.xml
<manifest >
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

    <application
    //以下省略

実装

fun startHttpRequest() {
    // URLオブジェクトを作成
    val url = URL("参照するURL")
    // HttpURLConnectionオブジェクトを取得
    val connection = url.openConnection() as? HttpURLConnection
    connection?.let {
        try {
            // 接続に使用する時間を設定(ミリ秒単位)
            it.connectTimeout = 2000
            // データ取得に使用する時間を設定(ミリ秒単位)
            it.readTimeout = 2000
            // HTTPリクエストメソッドの設定
            it.requestMethod = "GET"
            // 接続
            it.connect()
            // HttpURLConnectionオブジェクトからレスポンスデータを取得
            val stream = it.inputStream
            stream.close()
        } catch (ex: SocketTimeoutException) {
            Log.w(DEBUG_TAG, "通信タイムアウト", ex)
        }
        // // HttpURLConnectionオブジェクト解放
        it.disconnect()
    }
}

これでHTTP通信を行い、レスポンスを取得することができる。あとはレスポンスデータを加工する処理を追加して使用すれば良い。

注意点

通信処理をメインスレッドで行ってしまうとエラーが発生してしまうため、こちらの処理はワーカースレッドで行う必要があります。
実際開発の際も、こちらの処理はCoroutineを使用した非同期処理で実装をしていました。

参考

https://developer.android.com/reference/java/net/HttpURLConnection
https://toronavi.com/connection-httpurlconnection

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