Всем привет, пытаюсь отправить пост запрос на сервер средствами андроид. 1000 вариантов и только единицы удается запустить.
Нашел библиотеку Fuel, якобы бест оф зе бест)) Вот небольшой пример их кода.
Fuel.post("https://httpbin.org/post")
.jsonBody("{ \"foo\" : \"bar\" }")
.also { println(it) }
.response { result -> }
Сделал тестовый файлик на php
<?
print_r($_POST);
?>
Ответ возвращает пустой Array()
Уже перепробовал все варианты:
.jsonBody("{ \"foo\" : \"bar\" }")
.jsonBody("foo=bar")
.body("{ \"foo\" : \"bar\" }")
.body("foo=bar")
Не чего не помогает, подумал ну ладно, черт с ней этой либой, сделаем как-то средствами андроида.
fun sendPostRequest(userName:String, password:String) {
var reqParam = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(userName, "UTF-8")
reqParam += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8")
val mURL = URL("http://.../test.php")
with(mURL.openConnection() as HttpURLConnection) {
// optional default is GET
requestMethod = "POST"
val wr = OutputStreamWriter(getOutputStream());
wr.write(reqParam);
wr.flush();
Log.i(App.TAG,"URL : $url")
Log.i(App.TAG,"Response Code : $responseCode")
BufferedReader(InputStreamReader(inputStream)).use {
val response = StringBuffer()
var inputLine = it.readLine()
while (inputLine != null) {
response.append(inputLine)
inputLine = it.readLine()
}
Log.i(App.TAG,"Response : $response")
}
wr.close()
}
}
Код работает, запрос отправляет как надо, но есть одно большое НО! Код синхронный, на момент отправки все виснит, пытался сделать асинхронный, но видать не судьба на котлине это сделать, я не нашел рабочего примера как это сделать.
Библиотеки что использую
dependencies {
implementation 'androidx.leanback:leanback:1.0.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.work:work-runtime-ktx:2.5.0'
implementation 'androidx.tvprovider:tvprovider:1.0.0'
implementation 'androidx.preference:preference-ktx:1.1.1'
//Update
implementation 'com.g00fy2:versioncompare:1.2.8'
//Network
implementation "com.google.code.gson:gson:2.8.6"
implementation 'com.github.kittinunf.fuel:fuel:2.3.1'
implementation 'com.github.kittinunf.fuel:fuel-gson:2.3.1'
}