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のライブラリを使おうとういう正当な理由ではありませんでした。