fix FileNotFoundException when response code is 4xx or 5xx
This commit is contained in:
@@ -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) {
|
||||||
else -> {
|
is String -> {
|
||||||
Gson().toJson(body)
|
body
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
Gson().toJson(body)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
val wr = OutputStreamWriter(outputStream)
|
||||||
|
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()
|
||||||
|
|||||||
Reference in New Issue
Block a user