2017-02-09 9 views
1

Ich versuche Retrofit zu verwenden, aber ich erhalte 404 Code und die Meldung „nicht gefunden“Nachrüst-2 404 nicht gefunden

Antwort {protocol=http/1.1, code=404, message=Not Found}

ich auf meinem Server-Log sehen kann, dass die Anforderung erfolgreich war und die Antwort ist und Objekt

habe ich es mit Gson analysiert

{ 
    "codigoRespuesta": "00", 
    "descRespuesta": "Success", 
    "token": "0bc6e8a352a002db5782ae729501fd05bd825cf165864a0ab32d1ab1529001ed2583df4a5ab257a30f97117ec0fec0b6df60adf288fd6b1579f31d2d636d9aa" 
} 

so verwende ich das gleiche Objekt mit Retrofit, die ich mit asyncs Anfrage verwenden verwendet

public class AuthenticationResponse extends Response { 
private String token; 

public AuthenticationResponse() { 
} 

public AuthenticationResponse(String codigoRespuesta, String descRespuesta) { 
    super(codigoRespuesta, descRespuesta); 
} 

public AuthenticationResponse(String codigoRespuesta, String descRespuesta, String token) { 
    super(codigoRespuesta, descRespuesta); 
    this.token = token; 
} 

public String getToken() { 
    return this.token; 
} 

public void setToken(String token) { 
    this.token = token; 
} 

public String toString() { 
    return "AuthenticationResponse{token=" + this.token + ", " + super.toString() + '}'; 
} 

}

@XmlRootElement 

public class Response { 
private String codigoRespuesta; 
private String descRespuesta; 

public Response() { 
} 

public Response(String codigoRespuesta, String descRespuesta) { 
    this.codigoRespuesta = codigoRespuesta; 
    this.descRespuesta = descRespuesta; 
} 

@XmlElement 
public String getCodigoRespuesta() { 
    return this.codigoRespuesta; 
} 

public void setCodigoRespuesta(String codigoRespuesta) { 
    this.codigoRespuesta = codigoRespuesta; 
} 

@XmlElement 
public String getDescRespuesta() { 
    return this.descRespuesta; 
} 

public void setDescRespuesta(String descRespuesta) { 
    this.descRespuesta = descRespuesta; 
} 

public String toString() { 
    return "codigoRespuesta=" + this.codigoRespuesta + ", descRespuesta=" + this.descRespuesta; 
} 

}

Diese Projekte auf diesem Beispiel basiert github project

Meine Retrofit-Schnittstelle

public interface servicesTutorial { 

@GET("usersFake") 
Call<List<ResponseService>> getUsersGet(); 


@POST("usersFake") 
Call<List<ResponseService>> getUsersPost(); 

@POST("login") 
Call<AuthenticationResponse> doLogin(@Body RequestLogin request); 

}

Meine MainActivity Klasse

public class MainActivity extends AppCompatActivity { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Gson gson = new GsonBuilder() 
       .setLenient() 
       .create(); 

     final String url = "https://myurl.com/"; 
     Retrofit retrofit = new Retrofit.Builder() 
       .baseUrl(url) 
       .addConverterFactory(GsonConverterFactory.create(gson)) 
       .build(); 


     servicesTutorial serviceTuto = retrofit.create(servicesTutorial.class); 

     Call<AuthenticationResponse> call2 = serviceTuto.doLogin(new RequestLogin("user","pwd")); 

     call2.enqueue(new Callback<AuthenticationResponse>() { 
      @Override 
      public void onResponse(Call<AuthenticationResponse> call, Response<AuthenticationResponse> response) { 
       Log.e("testing", "respuesta: "+response.message()+" *** "+response.code()+" *** "+response.isSuccessful() + 
         " *** " + response.raw().toString()); 
      } 

      @Override 
      public void onFailure(Call<AuthenticationResponse> call, Throwable t) { 
       Log.e("testing",t.toString()); 
      } 
     }); 


} 
} 

EDIT: ich es endlich, appareantly weil meine Dienste mit Java und Spring gemacht wurde ich einen Header auf meine Anfrage hinzufügen hatte ("Accept : application/json ")

+0

bitte, zeigen Sie den Code die Nachrüstung 2 –

+0

eigentlich ist Ihr Github-Projekt bro LOL, ich versuche, meinen eigenen Dienst zu verwenden, aber ich bekomme ein Null-Objekt auf meiner Antwort (der Server sendet eine Antwort) –

+0

hahaha dude i bin Schöpfer der diese Repo XD haha ​​Sie Emulator verwenden? –

Antwort

0

Posible Lösungen

1: wenn Ihr Dienst ist local, erinnern

Genymotion

http://10.0.3.2/

Standard AVD

http://10.0.2.2/

2: Überprüfen Sie, ob Ihre Endpunkte korrigiert sind

usersFake 
login 

3: In meinem Fall in meinem lokalen habe ich nginx und ich habe ein Problem

+0

Mein Dienst ist nicht lokal ist im Internet veröffentlicht, meine Endpunkte sind korrekt Ich erreiche meine WS aber meine Antwort ist Null auf Retrofit Callback (auf Server-Log Ich sehe den gesamten Prozess mit einer gültigen Antwort) :( –

+0

vielleicht Ihre JSON Antwort Nein, es ist korrekt, bitte überprüfen Sie die Verwendung dieser Seiten http://www.jsonschema2pojo.org/ ---- http://jsonlint.com/ –

+0

Ist der gleiche Dienst, den ich tatsächlich verwende, habe ich bereits eine App mit all dem entwickelt Klassen und Dienste, aber jetzt möchte ich es in saubere Architektur verschieben Ich pflegte meine Aufrufe an meinen Client mit einem http-Client zu tun und dann mit gson parse ich benutze das gleiche, es kann nicht das Objekt oder die JSON (der JSON ist auf dem Post) das, warum ich nicht verstehe, was los ist :( –

0

mit Emulator Zugriff stand ich vor dem gleichen Problem gestern. Versuchen Sie Folgendes:

Überprüfen Sie Ihre Arbeits-URL im Browser. Wenn Ihr URL-Endpunkt Erweiterungen wie .php hat, fügen Sie ihn in Ihren GET/POST Annotationsparameter ein und schreiben Sie den vollständigen Namen wie @GET("userFake.php").

Das funktionierte für mich. Hoffe es funktioniert auch für dich.

+0

Danke für die Bearbeitung meiner grammer Fehler - @ sud007 –

+0

Hallo, mein Service ist ein Java-Service, der Endpunkt ist in Ordnung kann ich die Anfrage o. sehen n Server-Seite kann ich die Antwort auf der Server-Seite sehen, aber Retrofit bekommt eine Null-Antwort :( –

+0

Verwenden Sie zunächst Postman für die Prüfung Problem von Mobile/TVs generiert? –