2016-07-24 10 views
0

Ich habe einen Server mit Mongo, Express- und Knoten Ich versuche, Benutzerdaten von Benutzername zu erhalten hier holen.Kann nicht Retrofit 2 Antwort Körper

Hier ist mein Code:

Hauptaktivität:

@BindView(R.id.btnTest) 
Button btnTest; 
@BindView(R.id.tvTest) 
TextView tvTest; 

@OnClick(R.id.btnTest) void changeText(){ 
    GitHubService gitHubService = GitHubService.retrofit.create(GitHubService.class); 
    final Call<User> call = 
      gitHubService.getUser("dolev"); 

    call.enqueue(new Callback<User>() { 
     @Override 
     public void onResponse(Call<User> call, Response<User> response) { 
      Toast.makeText(MainActivity.this,"This: " + response.body().getName(), Toast.LENGTH_SHORT).show(); 
      tvTest.setText("response success," + response.body().toString()); 
     } 
     @Override 
     public void onFailure(Call<User> call, Throwable t) { 
      tvTest.setText("Something went wrong: " + t.getMessage()); 
     } 
    }); 
} 

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

} 

@Override 
public void onResponse(Call<User> call, Response<User> response) { 
    int code = response.code(); 
    if (code == 200) { 
     User user = response.body(); 
     Log.v("FETCH", response.body().getEmail()); 
     Toast.makeText(this, "Got the user: " + user.getName(), Toast.LENGTH_LONG).show(); 
    } else { 
     Toast.makeText(this, "Did not work: " + String.valueOf(code), Toast.LENGTH_LONG).show(); 
    } 
} 

@Override 
public void onFailure(Call<User> call, Throwable t) { 
    Toast.makeText(this, "Nope", Toast.LENGTH_LONG).show(); 

} 

GitHubService:

public interface GitHubService { 



@GET("users/name/{username}") 
Call<User> getUser(@Path("username") String username); 

@GET("users}") 
Call<List<User>> getAllUsers(); 





public static final Retrofit retrofit = new Retrofit.Builder() 
     .baseUrl(Global.API) 
     .addConverterFactory(GsonConverterFactory.create()) 
     .build(); 

}

Benutzerklasse:

package com.noy.photobomb.model; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

import java.util.ArrayList; 
import java.util.List; 

import javax.annotation.Generated; 

@Generated("org.jsonschema2pojo") 
public class User { 


    @SerializedName("_id") 
    @Expose 
    private String id; 
    @SerializedName("isBanned") 
    @Expose 
    private Boolean isBanned; 
    @SerializedName("users_followers") 
    @Expose 
    private List<Object> usersFollowers = new ArrayList<Object>(); 
    @SerializedName("__v") 
    @Expose 
    private Integer v; 
    @SerializedName("followers") 
    @Expose 
    private List<Object> followers = new ArrayList<Object>(); 
    @SerializedName("groups") 
    @Expose 
    private List<Object> groups = new ArrayList<Object>(); 
    @SerializedName("phoneNumber") 
    @Expose 
    private String phoneNumber; 
    @SerializedName("name") 
    @Expose 
    private String name; 
    @SerializedName("email") 
    @Expose 
    private String email; 


    private String login; 

    public String getLogin() { 
     return login; 
    } 
    /** 
    * 
    * @return 
    * The id 
    */ 
    public String getId() { 
     return id; 
    } 

    /** 
    * 
    * @param id 
    * The _id 
    */ 
    public void setId(String id) { 
     this.id = id; 
    } 

    /** 
    * 
    * @return 
    * The isBanned 
    */ 
    public Boolean getIsBanned() { 
     return isBanned; 
    } 

    /** 
    * 
    * @param isBanned 
    * The isBanned 
    */ 
    public void setIsBanned(Boolean isBanned) { 
     this.isBanned = isBanned; 
    } 

    /** 
    * 
    * @return 
    * The usersFollowers 
    */ 
    public List<Object> getUsersFollowers() { 
     return usersFollowers; 
    } 

    /** 
    * 
    * @param usersFollowers 
    * The users_followers 
    */ 
    public void setUsersFollowers(List<Object> usersFollowers) { 
     this.usersFollowers = usersFollowers; 
    } 

    /** 
    * 
    * @return 
    * The v 
    */ 
    public Integer getV() { 
     return v; 
    } 

    /** 
    * 
    * @param v 
    * The __v 
    */ 
    public void setV(Integer v) { 
     this.v = v; 
    } 

    /** 
    * 
    * @return 
    * The followers 
    */ 
    public List<Object> getFollowers() { 
     return followers; 
    } 

    /** 
    * 
    * @param followers 
    * The followers 
    */ 
    public void setFollowers(List<Object> followers) { 
     this.followers = followers; 
    } 

    /** 
    * 
    * @return 
    * The groups 
    */ 
    public List<Object> getGroups() { 
     return groups; 
    } 

    /** 
    * 
    * @param groups 
    * The groups 
    */ 
    public void setGroups(List<Object> groups) { 
     this.groups = groups; 
    } 

    /** 
    * 
    * @return 
    * The phoneNumber 
    */ 
    public String getPhoneNumber() { 
     return phoneNumber; 
    } 

    /** 
    * 
    * @param phoneNumber 
    * The phoneNumber 
    */ 
    public void setPhoneNumber(String phoneNumber) { 
     this.phoneNumber = phoneNumber; 
    } 

    /** 
    * 
    * @return 
    * The name 
    */ 
    public String getName() { 
     return name; 
    } 

    /** 
    * 
    * @param name 
    * The name 
    */ 
    public void setName(String name) { 
     this.name = name; 
    } 

    /** 
    * 
    * @return 
    * The email 
    */ 
    public String getEmail() { 
     return email; 
    } 

    /** 
    * 
    * @param email 
    * The email 
    */ 
    public void setEmail(String email) { 
     this.email = email; 
    } 

} 

Wenn ich versuche, die JSON-Daten zu erhalten - der Antworttext ist null - zB Name, ID, E-Mail usw. Die Antwort.body(). ToString() gibt mir ein Ergebnis von: @ 59285 Und die Nummer ändert sich .. Ich meine, ich bekomme als Körper Klasse [email protected] Während die Zahl nach dem @ ändert jeden Knopf klicken. Ich arbeite seit dem Morgen daran und ich habe viele Tutorials und Fehler von StackOverFlow durchsucht, aber ich habe keinen solchen Fehler gefunden. Kann mir bitte jemand helfen?

+0

Was ist der Statuscode? –

+0

während des Debuggen, Wenn Sie den Code in Körper dann seine 200 – Noy

+1

können Sie Ihre JSON-Antwort posten? –

Antwort

0

@Sagar Jogadia Hat mir durch den Chat geholfen, es herauszufinden. Das Problem war, dass die Daten in JSON-Array waren und ich versuchte, ein Objekt abzurufen, also statt Benutzer I eine Liste von Benutzern. Ich habe die Daten durch den Körper, der dann ein Array mit einem Index war - response.body.get (0) .getName() - zum Beispiel. Vielen Dank

+1

Froh, dass es geholfen hat !! glückliche Codierung .. –