Kotlin klaxon解析Google方向Api

对不起,我的英文(谷歌翻译)。 我试图用klaxon( https://github.com/cbeust/klaxon )在Kotlin上从google的方向得到两点之间的距离。

fun distanceDier (start: LatLng, end: LatLng, mode: String) { val url = ("http://maps.googleapis.com/maps/api/directions/json?" + "origin=" + start.latitude + "," + start.longitude + "&destination=" + end.latitude + "," + end.longitude + "&sensor=false&units=metric&mode=" + mode) val result = URL("$url").readText() val parser: Parser = Parser() val stringBuilder: StringBuilder = StringBuilder(result) val json: JsonObject = parser.parse(stringBuilder) as JsonObject println("distance : ${json.string("routes.legs.distance.text")},") println("$url") //test 

设定值

  distanceDier(LatLng(53.402971, 91.083748),LatLng(53.529799, 91.410684),"TravelMode") 

日志:

 FATAL EXCEPTION: main Process: ru.kbais.coal4, PID: 4494 java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {ru.kbais.coal4/ru.kbais.coal4.MainActivity}: android.os.NetworkOnMainThreadException 

发生错误

 val result = URL("$url").readText() 

网址: http : //maps.googleapis.com/maps/api/directions/json? origin= 53.402971,91.083748& destination= 53.529799,91.410684& sensor= false& units= metric& mode= TravelMode

如何获得从Json文件的距离和错误代码是什么?

  fun distanceDier (start: LatLng, end: LatLng, mode: String) { val url = ("http://maps.googleapis.com/maps/api/directions/json?" + "origin=" + start.latitude + "," + start.longitude + "&destination=" + end.latitude + "," + end.longitude + "&sensor=false&units=metric&mode=" + mode) //val result = URL(url).readText() //an extension over string (support GET, PUT, POST, DELETE with httpGet(), httpPut(), httpPost(), httpDelete()) url.httpGet().responseString { request, response, result -> //do something with response when (result) { is Result.Failure -> { } is Result.Success -> { val res = result.value println("Result: $result") val parser: Parser = Parser() val stringBuilder: StringBuilder = StringBuilder(res) val json: JsonObject = parser.parse(stringBuilder) as JsonObject println("distance : ${json.lookup<String?>("routes.legs.distance.text")},") } } } } 
Interesting Posts