2016-08-02 16 views
0

es wird Name, Status und Login erfolgreich. Aber es gibt 0 zu u_id (Benutzer-ID), was 4 sein sollte. Vielleicht erhält es Id als String von einem Json vielleicht? Ich weiß nicht das richtige JSON-Format für Ganzzahlen.Retrofit bekommt nicht die ID des JSON-Objekts

JSON:

{ 
    "id": "4", 
    "name": "nuku", 
    "status": "1", 
    "login": "sucess" 
} 

POJO: public class LoginModel {

@Expose 
    public static int id; 

    @Expose 
    public String name; 

    @Expose 
    private String status; 
    @Expose 
    private String login; 
...} 

Schnittstelle:

String url = "http://192.168.10.5/tourist/v1"; 
    @FormUrlEncoded 
    @POST("/login") 
    void Login(@Field("email") String email, 
       @Field("pass") String pass, Callback<LoginModel> cb); 
} 

Nachrüstfunktionsaufruf:

RestAdapter adapter = new RestAdapter.Builder().setEndpoint(RestInterface.url).build(); 

        //Creating Rest Services 
        final RestInterface restInterface = adapter.create(RestInterface.class); 

        //Calling method to get check login 
        restInterface.Login(email.getText().toString(), pass.getText().toString(), new Callback<LoginModel>() { 
         @Override 
         public void success(LoginModel model, Response response) { 

          //finish(); 
          //startActivity(getIntent()); 

          email.setText(""); 
          pass.setText(""); 

           int id = model.getUserId(); 
          if (model.getStatus().equals("1")) { //login Success 

           SharedPreferences sharedPreferences = getSharedPreferences("MyLogin.txt", Context.MODE_PRIVATE); 
           SharedPreferences.Editor editor = sharedPreferences.edit(); 
           editor.putBoolean("FirstLogin", true); 
           editor.commit(); 



           Toast.makeText(LoginActivity.this, "Login In SuccessFully"+model.getUserId(), Toast.LENGTH_SHORT).show(); 

           manager.setPreferences(LoginActivity.this, "status", "1"); 
           String status=manager.getPreferences(LoginActivity.this,"status"); 

           Intent i = new Intent(LoginActivity.this,MainActivity.class); 


           String name = model.getUser_name(); 
           i.putExtra("username", name); 
           // String image = p.getPlace_image(); 
           // i.putExtra("Thumbnail", image); 
           i.putExtra(MainActivity.EXTRA_USER,"username"); 
           startActivity(i); 



           // String nameStr = email.getText().toString(); 

           // i.putExtra("text1", nameStr); 
           //startActivity(i); 

          } else if (model.getStatus().equals("0")) // login failure 
          { 
           Toast.makeText(LoginActivity.this, "Invalid UserName/Pass ", Toast.LENGTH_SHORT).show(); 
           Intent i = new Intent(LoginActivity.this, LoginActivity.class); 
           startActivity(i); 

          } 
         } 

         @Override 
         public void failure(RetrofitError error) { 
          finish(); 
          startActivity(getIntent()); 
          String merror = error.getMessage(); 
          Toast.makeText(LoginActivity.this, merror, Toast.LENGTH_LONG).show(); 
         } 
        }); 
       } 
+0

Auf den ersten Blick scheint alles in Ordnung mit dem Code. Sind Sie sicher, dass das der JSON ist, den Sie von der API bekommen? Kannst du das irgendwie bestätigen? – Fred

+0

@Fred yeah, ich habe es direkt aus der Postman-Vorschau kopiert. –

+1

Das sieht eher wie ein String als ein Integer aus. Haben Sie versucht, es als String zu retreive und dann in eine ganze Zahl zu konvertieren? – cuoka

Antwort

0

Entweder ist Ihr LoginModel nicht korrekt oder derjenige, der den JSON sendet, macht es nicht richtig. Ihre ID in der JSON ist ein String, keine Integer (beachten Sie die Anführungszeichen)

Sie müssen den ID-Typ zu String in Ihrem LoginModel ändern, aber, IMO, eine bessere Lösung wäre es als erhalten Ganze Zahl.

Dies ist ein Beispiel für eine JSON mit einer Integer drin:

{ 
"email":"[email protected]", 
"age":25, 
"man":true, 
"password":"123456" 
} 
+0

danke mein Problem wurde gelöst. –

+0

@NukhbaArshad Großartig, bitte, akzeptiere die Antwort, wenn es dir geholfen hat. – cuoka

0

Ich versuchte immer Id als String aber Nachrüstung es null zugewiesen, damit ich konvertierte nur meine JSON in integer mit diesem Echo json_encode ($ Ausgabe, JSON_NUMERIC_CHECK); und es hat funktioniert!