【kotlin】Fuelでの同期処理【androidアプリ開発】

Code

androidアプリ開発をしていて外部サイトからデータを取得して処理を行う際に同期で処理を行いたいときの記述の覚書です。

val resJson = loginAuth(sessionId, accountId)
fun loginAuth (sessionId:String?,accountId:String?): JSONObject {

    // ログイン状況の取得
    return runBlocking {

        //ユーザーエージェント設定
        FuelManager.instance.baseHeaders = mapOf("User-Agent" to "xxxxxxxxxxxxxxxx")

        // データ取得
        val (_,_,result) = Fuel.post(
            [APIURL],
            listOf(
                "session_id" to sessionId,
                "account_id" to accountId
            )
        ).authentication()
            .basic([user_id], [password])
            .awaitStringResponseResult()

        // 同期処理を行いJsonを返すためにfoldが必要
        val data = result.fold(
            {data->data},
            {error-> Log.e("appWebAPI","An error of type ${error.exception} happened: ${error.message}")}
        )

        // JSONObjectをリターン
        JSONObject(data as String)
    }
}

今回はログインのファンクションを作りました。

FuelManager.instance.baseHeadersでユーザーエージェントを設定しています。

runBlockingとfoldで値が取得完了するまで処理を先に進まないようにしています。
dataに値を取得してJSONObjectでJson形式のオブジェクトを返します。

listOfの中にPOSTしたい値を入力しauthentication().basic()でベーシック認証の突破を行っています。

コメント

タイトルとURLをコピーしました