使用查询参数改进URL

时间:2017-09-02 19:07:07

标签: java android json retrofit2

我正在尝试第一次使用改装并且缺少简单的逻辑。请帮我解决这个问题。

这是我的用户类

public class User {

    private String name, email, password;

    public User(){
    }

    public User(String name, String email, String password){
        this.name = name;
        this.email = email;
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public String getEmail() {
        return email;
    }

    public String getPassword() {
        return password;
    }


    public void setName(String name) {
        this.name = name;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

API接口

   public interface MyApiEndpointInterface {
        // Request method and URL specified in the annotation
        // Callback for the parsed response is the last parameter

        @GET("users?email={email}")
        Call<User> getUser(@Query("email") String email);
     }

这是我获取细节的方式:

 public void getUserDetails()
{
    String email = inputEmail.getText().toString()
    Call<User> call = apiService.getUser(email);

    call.enqueue(new Callback<User>() {
        @Override
        public void onResponse(Call<User>call, Response<User> response) {
            if(response.body()!=null)
            {
                Log.d("TAG", "Name: " + response.body().getName());
                Log.d("TAG", "Password: " + response.body().getPassword());
            }
            else
            {
                Toast.makeText(getApplicationContext(), "User does not exist", Toast.LENGTH_SHORT).show();
                Log.d("TAG", "User details does not exist");
            }
        }

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

现在我的问题是我有web api,它托管在服务器上,它看起来像:

http://www.somesite.com

要根据提供的电子邮件获取用户详细信息,我正在尝试使用此功能:

http://www.somesite.com/api/user?email= {电子邮件}

现在如何在api界面中将此url设置为返回null?

1 个答案:

答案 0 :(得分:2)

apiService中,您应该使用Builder创建一个Retrofit对象,并使用此对象创建MyApiEndpointInterface接口的实例。在那里你添加了API的baseUrl。

看起来应该是这样的:

Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://yourapibaseUrl.com/api/")
                .build();

MyApiEndpointInterface apiInterface = retrofit.create(MyApiEndpointInterface.class);

apiInterface是您将使用Refit调用API的对象,它已经设置了baseUrl。

希望这会有所帮助.-