diadia

興味があることをやってみる。自分のメモを残しておきます。

kotlinでインターネットに接続する処理

http接続

処理

//接続先のurlを文字列で準備する    
val urlStr : String = "接続したいurl"

//urlの文字列を使ってURLオブジェクトを生成
val url = java.net.URL(urlStr)
//URlオブジェクトを使ってHttpURLConnectionオブジェクトを作成
val con = url.openConnection() as HttpURLConnection
//接続メソッドをGETに設定
con.requestMethod = "GET"
//接続
con.connect()

//HttpURLConnectionからレスポンスデータを取得
val stream = con.inputStream
//レスポンスデータ(inputStream)を文字列(JSON)に変換
val result = is2String(stream)
//HttpURLConnectionオブジェクトを解放
con.disconnect()
//InputStreamオブジェクトを解放
stream.close()

https://developer.android.com/reference/kotlin/java/net/URL#

インターネットに接続するために他に必要なこと

ネットに接続するためにアプリケーションがネットに接続する許可が必要になる。これはmanifestファイルにその旨を記述しなければならない。

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>    
<manifest xmlns:android="http://schemas.android.com/apk/res ...>    
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

    <application 
        android:usesCleartextTraffic="true"
        ...>

    </application>    
</manifest>    

より良い接続方法

上記ではHttpURLConnectionを使ってHTTP通信を行った。この方法よりもOkHttpやretrofitを使う方法が手軽だと感じた。
https://torajirousan.hatenadiary.jp/entry/2020/02/03/145043
https://torajirousan.hatenadiary.jp/entry/2020/02/26/130413