fix FileNotFoundException when response code is 4xx or 5xx

master
stevenzack 4 years ago committed by Kevin Wan
parent b65fcc5512
commit 701208b6f4

@ -26,9 +26,9 @@ import java.net.URL
const val SERVER = "http://localhost:8080" const val SERVER = "http://localhost:8080"
suspend fun apiRequest( suspend fun apiRequest(
method:String, method: String,
uri: String, uri: String,
body: Any="", body: Any = "",
onOk: ((String) -> Unit)? = null, onOk: ((String) -> Unit)? = null,
onFail: ((String) -> Unit)? = null, onFail: ((String) -> Unit)? = null,
eventually: (() -> Unit)? = null eventually: (() -> Unit)? = null
@ -36,27 +36,33 @@ suspend fun apiRequest(
val url = URL(SERVER + uri) val url = URL(SERVER + uri)
with(url.openConnection() as HttpURLConnection) { with(url.openConnection() as HttpURLConnection) {
requestMethod = method requestMethod = method
headerFields["Content-Type"] = listOf("Application/json") doInput = true
val data = when (body) { if (method == "POST" || method == "PUT") {
is String -> { setRequestProperty("Content-Type", "application/json")
body doOutput = true
val data = when (body) {
is String -> {
body
}
else -> {
Gson().toJson(body)
}
} }
else -> { val wr = OutputStreamWriter(outputStream)
Gson().toJson(body) wr.write(data)
wr.flush()
}
if (responseCode >= 400) {
BufferedReader(InputStreamReader(errorStream)).use {
val response = it.readText()
onFail?.invoke(response)
} }
return@with
} }
val wr = OutputStreamWriter(outputStream)
wr.write(data)
wr.flush()
//response //response
BufferedReader(InputStreamReader(inputStream)).use { BufferedReader(InputStreamReader(inputStream)).use {
val response = it.readText() val response = it.readText()
if (responseCode == 200) { onOk?.invoke(response)
onOk?.invoke(response)
} else {
onFail?.invoke(response)
}
} }
} }
eventually?.invoke() eventually?.invoke()

Loading…
Cancel
Save