Ich habe eine Web-Service-Methode namens . Ich schicke UpdateStatusRequest
Objekte zu diesem Web-Dienst, der wie unten definiert:Retrofit2: Verwendung Körper vs Abfrage
public class UpdateStatusRequest {
private String Status;
public UpdateStatusRequest(String status) {
Status = status;
}
public String getStatus() {
return Status;
}
}
Wenn ich unter API Verzögerung verwenden:
@POST("StatusUpdate")
Call<Status> change(@Query("Status") String status);
und dann statusApi.change(request.getStatus())
Aufruf, es funktioniert gut. Es wird http://server-url/StatusUpdate?Status=Ready
aufrufen, wenn ich Ready
als Status übergebe.
Aber mit folgenden Erklärung
@POST("StatusUpdate")
Call<Status> change(@Body UpdateStatusRequest status);
und dann statusApi.change(request)
ruft, wird es http://server-url/StatusUpdate
rufen und sendet Status
in Anfrage Körper. Dies führt zu 404
Statuscode mit Fehleraufforderung Not Found
.
Ich möchte wissen, was ist falsch mit meinem zweiten Anruf (seit ich vermutete @Body
wirkt wie mehrere @Query
Parameter, die im selben Objekt gebündelt)?
Erhält Ihr Dienst POST oder GET? – diegoveloper
'@ Body' verhält sich nicht wie mehrere '@ Query'-Parameter. Dies sind zwei verschiedene Arten, Daten zu senden, und es sieht so aus, als ob die von Ihnen verwendete API erwartet, dass sie im letzteren Format vorliegen ('@ Query'). –
@diegoveloper Es empfängt POST-Anfrage. – VSB