Kotlinでhttpリクエストを投げてみる。 (khttp)

2018年1月30日

 

 

さて、前回のHelloWorldに引き続き今回は
kotlinでHTTPリクエストを送ってみます。

 

khttpを使ってみる

今回使用するライブラリは、

khttp です

https://github.com/jkcclemens/khttp

ライブラリは
ここ
から見つけてきました。

使い方はkhttpの上記リンク先に書いています。

ひとまず build.gradle.ktsは

buildscript {

    repositories {
        gradleScriptKotlin()
    }

    dependencies {
        classpath(kotlinModule("gradle-plugin"))
    }
}

plugins {
    application
}

apply {
    plugin("kotlin")
}

configure {
    mainClassName = "samples.HelloWorldKt"
}

repositories {
    gradleScriptKotlin()
    jcenter()
}

dependencies {
    compile(kotlinModule("stdlib"))
    "compile"("khttp:khttp:0.1.0")
}


こんな感じで
メインの処理は以下です。

package samples

import khttp.get

fun main(args: Array) {
    var url : String = "https://lightning.bitflyer.jp/v1/getboard" // bitFlyerのAPI URL
    // Get our IP
    println(get(url).jsonObject.getInt("mid_price"))
}

リクエストの送信先はなんでもいいのですが
今回は私の最近気になる、
bitFlyerさんのAPIを利用して、
ビットコインの現在価格を取得してきます。


ちなみにjson はこんな形でレスポンスを返します。

{"mid_price":116884.0,
"bids":[{"price":116867.0,"size":2.346},
        {"price":116853.0,"size":2.0},
        {"price":116850.0,"size":10.18},
        {"price":116845.0,"size":0.04046836},
        ・
        ・
        ・
        (略)

 

 

では、実際に動かしてみます。

$ ./gradlew run
:compileKotlin
w: The '-d' option with a directory destination is ignored because '-module' is specified
:compileJava NO-SOURCE
:copyMainKotlinClasses
:processResources NO-SOURCE
:classes UP-TO-DATE
:run
116840
BUILD SUCCESSFUL

ちなみに余計な出力を消すときは
-q オプション
をつけてあげてください。

見事 1BTCあたりの日本円価格の取得に成功しています。
以上です!!