2016-04-28 4 views

Antwort

2

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.

+0

Ich habe versucht, in Google zu suchen, aber nicht gefunden. Wie kann ich TypedInput anschließen – Devnock

+0

Sie können auch versuchen: @POST ("Ruhe/Training") Aufruf createWorkout (@NonNull @Body RequestBody requestBody); RequestBody requestBody = RequestBody.create (MediaType.parse ("application/json"), jsonObject.toString()); –

+0

Danke, Alter! Es löste alle meine Probleme – Devnock

1

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.