Kann ich JSON senden direkt über Retrofit wie folgt aus:Direkt POST JSONObject über Retrofit
@POST("rest/workouts")
Call<CreateWorkoutSuccessAnswer> createWorkout(@NonNull @Body JSONObject jsonObject);
Kann ich JSON senden direkt über Retrofit wie folgt aus:Direkt POST JSONObject über Retrofit
@POST("rest/workouts")
Call<CreateWorkoutSuccessAnswer> createWorkout(@NonNull @Body JSONObject jsonObject);
können Sie TypedInput verwenden
@POST("rest/workouts")
Call<CreateWorkoutSuccessAnswer> createWorkout(@NonNull @Body TypedInput body);
Und param bilden:
TypedInput in = new TypedByteArray("application/json", jsonObject.toString().getBytes("UTF-8"));
und Verwendung in als Parameter für die Anfrage.
Sie können JSON-Objekte direkt mit GSONs JsonObject
klassen.
Der Grund, warum Googles JSONObject
nicht funktioniert, ist, dass Retrofit GSON standardmäßig verwendet und versucht, den JSONObject-Parameter als POJO zu serialisieren. So erhalten Sie so etwas wie: mit dem String-Format des Objekts
{
"JSONObject":
{
<your JSON object here>
}
}
Wenn das, was Sie tun, Sie erfordert die Verwendung JSONObject
dann können Sie einfach zwischen den beiden konvertieren.
Ich habe versucht, in Google zu suchen, aber nicht gefunden. Wie kann ich TypedInput anschließen – Devnock
Sie können auch versuchen: @POST ("Ruhe/Training") Aufruf createWorkout (@NonNull @Body RequestBody requestBody); RequestBody requestBody = RequestBody.create (MediaType.parse ("application/json"), jsonObject.toString()); –
Danke, Alter! Es löste alle meine Probleme – Devnock