2018年、明けましておめでとうございます。
制作部の花島です。
今年もよろしくお願いいたします。
2018年1発目はKotlinのFuelでHTTP通信のやり方を
Googleの画像解析のVision APIを用いて説明します。
概要
1.build.gradleでFuelライブラリをインストール
compile 'com.github.kittinunf.fuel:fuel-android:1.12.0'
2.FuelでURL、Path、ヘッダー、リクエストパラメータを設定し実行
コード
//Vision APIのBase URLを設定
FuelManager.instance.basePath = "https://vision.googleapis.com/v1"
//ヘッダーのcontent typeをJSONに設定
FuelManager.instance.baseHeaders = mapOf("Content-Type" to "application/json")
//Vision APIのエンドポイントを設定
val path: String = "images:annotate?key=API_KEY"
//リクエストパラメータに渡す画像(Base64)
val imgBase64: String = imgBase64
//リクエストパラメータを設定
val body: String = "{" +
"requests: [" +
"{" +
"image: {" +
"content: \"${imgBase64}\"" +
"}," +
"features: [" +
"{" +
"type: \"TEXT_DETECTION\"" +
"}" +
"]" +
"}" +
"]" +
"}"
//同期処理
//POST通信の場合はpost()postメソッドにエンドポイントを渡す
//body()メソッドにリクエストパラメータを渡す
//responseJsonで実行。resultにレスポンスのJsonが返る
val (request, response, result) = Fuel.post(path).body(body).responseJson()
//非同期処理
Fuel.post(path).body(body).responseJson { request, response, result ->
//dosomething
}
余談
何故、Fuelを使ったか・・・
それはAndroidの定番のRetrofitライブラリだとAPIのエンドポイントに
コロンがあると不正なURLでエラーになり、ハマったからです。
Kotlinのライブラリを使おうとういう正当な理由ではありませんでした。