Ich versuche, RetroFit2
und OkHttp3
zu verwenden, um eine POST-Methode für ein PHP-Skript. Ich habe GET-Methoden völlig in Ordnung, aber ich habe Probleme mit dem Posten.OKHttp POST scheint nicht zu senden Anfrage-Nachricht
Ich habe eine HttpLoggingInterceptor
eingerichtet mit meiner OkHttpClient
, und es protokolliert den Anfragekörper perfekt. Aber mein PHP-Skript hat die Daten nicht empfangen, daher habe ich versucht, die $_POST
Daten auszugeben, sobald ich sie bekommen habe, aber es ist eine leere Zeichenfolge. Ich kann nicht sagen, ob auf der Android-Seite, der Server-Seite oder bei beiden etwas nicht stimmt.
Mein RetroFit
Objekt und OkHttpClient
sind wie so ein:
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder()
.cookieJar(RestCookieJar.getInstance())
.addInterceptor(interceptor)
.build();
Gson gson = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.registerTypeAdapter(Instant.class, new InstantAdapter())
.registerTypeAdapter(LatLng.class, new LatLngAdapter())
.registerTypeAdapter(Uri.class, new UriAdapter())
.create();
Retrofit retrofit = new Retrofit.Builder()
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create(gson))
.client(client)
.baseUrl(BASE_URL)
.build();
RestService service = retrofit.create(RestService.class);
Dann wird meine RestService
Schnittstelle wie folgt ein:
public interface RestService {
@GET("api/index.php")
Call<List<Session>> getSessions();
@POST("api/index.php")
Call<ResponseBody> postSession(@Body Session session);
}
Wie ich bereits erwähnt, dies alles scheint zu funktionieren , aber wenn ich anrufe:
<?php
if($_SERVER['REQUEST_METHOD'] === 'POST') {
print_r($_POST);
}
Ich bekomme eine leere Klammer.