2016-07-24 66 views
0

我有蒙戈,快递和节点 我想通过这里的用户名来获取用户数据的服务器: myip/users/name/example_name无法获取改造2响应主体

凡example_name是一个参数。

这里是我的代码:

主要活动:

@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(); 

}

用户类别:

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; 
    } 

} 

当我试图获取JSON数据 - 响应正文为空 - 例如名称,ID,电子邮件等。 response.body()。toString()给我的结果如下: @ 59285 和数字变化.. 我的意思是,我得到的身体 类[email protected] 而@后的数字更改每个按钮单击。 我从早上开始工作,并且已经搜索了很多教程和StackOverFlow的错误,但是我没有发现这样的错误。 有人可以帮我吗?

+0

什么是状态码? –

+0

同时调试,如果你的意思是在身体的代码,然后它的200 – Noy

+1

你可以发布你的JSON响应? –

回答

0

@Sagar Jogadia 帮助我通过聊天找出答案。 问题是数据是在JSON数组中,我试图获取一个对象,所以用户而不是用户列表中的用户。例如,我通过body获得了数据,然后是一个包含一个索引的数组 - response.body.get(0).getName()。 非常感谢

+1

很高兴帮助!快乐编码.. –