Android (kotlin) + OkHttp: POST request látszólag GET-té válik (?)

Android (kotlin) + OkHttp: POST request látszólag GET-té válik (?)
2021-03-04T16:53:54+01:00
2021-03-05T10:00:12+01:00
2022-10-15T21:26:09+02:00
pookie2
Sziasztok!

Egy ezer éves android projektet tervezek modernebb köntösben teljesen újraírni (Android studio + kotlin).
Min API level: 29 (Android 10)
Készülék: OnePlus Nord, Android 10 (Oxygen OS 10.5.11.AC01BA)

Az appnak HTTP-n kommunikálnia kell egy szerverrel (PHP 7.3).
Most keresgélem az eszközöket, amiket használni fogok, és rátaláltam az OkHttp-re.

A probléma az, hogy egyszerűen nem tudom rávenni, hogy POST requestet küldjön, valamiért mindig GET-té válik, és nem találom az okát.

Dependency:

implementation 'com.squareup.okhttp3:okhttp:4.9.1'

1. Próbálok post requestet küldeni (form):

val client = OkHttpClient() val formBody: RequestBody = FormBody.Builder() .add("param_1", "value_1") .add("param_2", "value_2") .build() val request = Request.Builder() .url("http://192.168..../request") .post(formBody) .build() client.newCall(request).enqueue(object :Callback { override fun onFailure(call: Call, e: IOException) { // TODO } override fun onResponse(call: Call, response: Response) { // TODO } })

2. A szerver-oldali kód:

$fh = fopen("wtf.log", "a"); fwrite($fh, "REQ METHOD:\n".$_SERVER["REQUEST_METHOD"]."\n------------------\n"); fwrite($fh, "HEADERS:\n".var_export(getallheaders(), true)."\n------------------\n"); fwrite($fh, "REQUEST:\n".var_export($_REQUEST, true)."\n------------------\n"); fwrite($fh, "GET:\n".var_export($_GET, true)."\n------------------\n"); fwrite($fh, "POST:\n".var_export($_POST, true)."\n------------------\n"); fwrite($fh, "INPUT:\n".var_export(file_get_contents('php://input'), true)."\n------------------\n"); fclose($fh);

És a kimenete:

REQ METHOD: GET ------------------ HEADERS: array ( 'Host' => '192.168....', 'Connection' => 'Keep-Alive', 'Accept-Encoding' => 'gzip', 'User-Agent' => 'okhttp/4.9.1', ) ------------------ REQUEST: array ( ) ------------------ GET: array ( ) ------------------ POST: array ( ) ------------------ INPUT: '' ------------------

Már ülök rajta egy ideje (a kotlin is új nekem)... mit rontok el?

Köszönöm!

Szerk, további infó:
A manifestbe (application) betettem még ezt:

android:usesCleartextTraffic="true"
Ellenkező esetben kiabál az android, hogy nem safe és letiltja a requestet.

Teszteltem enélkül is https-en, úgy már engedi, de a POST/GET probléma nem javul.
Mutasd a teljes hozzászólást!
Akkor lehet az utóbbi.

Mit loggol, ha egy / jelet raksz a végére?

.url("http://192.168..../request/")
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd