2017-03-06 4 views
0

Ich mache eine Put-Anfrage an den Server mit Retrofit2. Mit dem gleichen Token, Körper und Pfad mit Postman, wird der Inhalt erfolgreich bearbeitet, aber die gleiche Sache kommt mit Fehler mit Retrofit2 unter Angabe der Bedingung fehlgeschlagen. 412 Fehler.412 Vorbedingung fehlgeschlagen während PUT Anfrage von Retrofit2

@PUT("issues/{id}/") 
Call<IssueList> putIssue(@Header("Authorization")String token, 
         @Body IssueList issue, 
         @Path("id") Double issueId); 

bearbeiten

Call<IssueList> issuePostRequest = postService.putIssue(Splash.token, 
        issueRequest,editIssueId); 
      issuePostRequest.enqueue(new Callback<IssueList>() { 
       @Override 
       public void onResponse(Call<IssueList> call, Response<IssueList> response) { 
        if (!response.isSuccessful()){ 
         System.out.println(response.message()); 
         System.out.println(response.code()); 
         System.out.println(response.headers()); 
         return; 
        } 
        System.out.println("passed"); 
       } 

       @Override 
       public void onFailure(Call<IssueList> call, Throwable t) { 

       } 
      }); 

Response ist nicht erfolgreich.

+1

versuchen, ohne den letzten Schrägstrich, @PUT ("issues/{id}") – sadat

+0

Ich habe das schon einmal versucht. Das funktioniert nicht. –

+0

Sind Sie sicher, dass die ID ein '' Double'' ist? Klingt ein bisschen komisch. Ich weiß nicht einmal, wie Retrofit dies formatieren würde, aber ich vermute, dass es Dezimalstellen hinzufügt, was für eine ID seltsam klingt. Dies würde zu einer URL wie '' issues/123.0/'' führen – Fred

Antwort

0

Dank an alle, ich fand, was das Problem war. Es war nicht die Nachrüstung, sondern das Objekt, das ich schickte. Ich schickte ein Objekt durch @Body, das unerwünschte Variable hatte.

Ich lernte über http Interceptor Log, das ist ein großartiges Werkzeug für die Nachrüstung und ich konnte den Root-Fehler lokalisieren.