2016-03-02 8 views
9

ho chiamato PATCH servizio Web utilizzando Retrofit2 ma onResponse non si chiama e il onFailure si chiama Nonostante il funzionamento del il servizio è riuscito sul lato server perfettamenteRetofit2 errore java.io.EOFException: Fine di ingresso alla linea 1 colonna 1

e ogni volta, ho cercato di utilizzare Fiddler per controllare il servizio il suo lavoro, ho trovato il problema è che la serializzazione la venuta di risposta del servizio e quando si utilizza Fiddler ho scoperto che non contenuto della risposta JSON, quindi il servizio di retrofit assume d che il suo fallito perché non ci sono contenuti e non può serializzare il contenuto EMPTY e darmi questo errore

java.io.EOFException: End of input at line 1 column 1 

Fiddler risposta prime

HTTP/1.1 200 OK 
Server: nginx/1.9.4 
Date: Wed, 02 Mar 2016 09:55:55 GMT 
Content-Type: application/json 
Content-Length: 0 
Connection: close 
Status: 200 OK 
X-Content-Type-Options: nosniff 

Fiddler JSON Risposta è vuota

webservice in java

Call<Object> call = TimeCapp.services.accept_invited_alerts(HomeActivity.api_token, alert_id); 

call.enqueue(new Callback<Object>() 
{ 
    @Override 
    public void onResponse (Call<Object> call, Response<Object> response) 
    { 
     if (response.isSuccess()) { 
      String x = response.body(); 
     } 
    } 
    @Override 
    public void onFailure (Call<Object>call, Throwable t) 
    { 
     String x = t.getMessage();//java.io.EOFException: End of input at line 1 column 1 
    } 
} 

ho provato a sostituire oggetto con String, JsonObject, emptyCalssBody .... ma la sua non è riuscito

l'interfaccia del webservice

@PATCH("alerts/{alert_id}/accept") 
Call<Object> accept_invited_alerts(@Header("X-Api-Token") String 
api_token, @Path("alert_id") int alert_id); 
+1

solo restituire void invece, se il corpo è vuoto – Bhargav

+0

ho sostituito il tipo di oggetto con il tipo Void in codice Java e non cambiato in cambio webservice, grazie per il tuo suggerimento in modo che tu possa pubblicare la risposta per accettarla e contrassegnarla :) @Bhargav –

risposta

27

solo tornare vuoto, invece, se il corpo è vuoto

@PATCH("alerts/{alert_id}/accept") Call<Void> accept_invited_alerts(@Header("X-Api-Token") String api_token, @Path("alert_id") int alert_id); 
+0

per favore cambia in @PATCH ("avvisi/{alert_id}/accetta") Chiama accept_invited_alerts (stringa @Header ("X-Api-Token") api_token, @Path ("alert_id") int alert_id) ; @Bhargav –

+0

@MinaFared oops grazie! ho dimenticato questo è come funzionava – Bhargav

+2

Gesù Cristo, per favore, documenta questo team di retrofit !!!! Stai perdendo il nostro tempo! –

2

Grazie mille tanto.

Api

@FormUrlEncoded 
    @POST("/rebu/insertusuario.php") 
    Call<Void> insertLogin(@Field("email") String email, 
          @Field("senha") String senha, 
          @Field("codCondutor") Long codCondutor); 

Classe

Call call = service.insertLogin(login.getEmail(), login.getSenha(), login.getCodCondutor());