使用Retrofit Android登录活动

时间:2015-05-27 16:51:31

标签: android retrofit

我是Android新手,我尝试了解Retrofit库,以便在登录应用程序中使用它,但我无法使其工作。这是我的示例代码。

LoginAPI.java

  public interface LoginAPI {
   @POST("/login.php")
   public void getFeed(String username,String password,Callback<LoginResponse> response);

}

MainActivity.java

   login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            RestAdapter restAdapter = new RestAdapter.Builder()
                    .setEndpoint("https://xxx.xxx.xxx.xxx")
                    .build();


            LoginAPI api = restAdapter.create(LoginAPI.class);
            api.getFeed(username,password,new Callback<LoginResponse>() {
                @Override
                public void success(LoginResponse loginResponse, Response response) {
                    Toast.makeText(MainActivity.this,"Logged in",Toast.LENGTH_LONG).show();
                }

                @Override
                public void failure(RetrofitError error) {
                    Toast.makeText(MainActivity.this,"Login Failed",Toast.LENGTH_LONG).show();

                }
            });
        }
    });

}

3 个答案:

答案 0 :(得分:0)

在单独的线程或AsyncTask上进行改装调用

试试这个

 login.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    Thread fetch = new Thread(new Runnable() {
        @Override
        public void run() {

               RestAdapter restAdapter = new RestAdapter.Builder()
                .setEndpoint("https://xxx.xxx.xxx.xxx")
                .build();


        LoginAPI api = restAdapter.create(LoginAPI.class);
        api.getFeed(username,password,new Callback<LoginResponse>() {
            @Override
            public void success(LoginResponse loginResponse, Response response) {
                Log.d("Response","Logged In");
            }

            @Override
            public void failure(RetrofitError error) {
                Log.d("Response","Failed");

            }
        });
    }
  }

 fetch.start();
});

Toast可能无法使用其他线程使用Log.d()。

答案 1 :(得分:0)

我猜您在界面中缺少注释,请替换

public interface LoginAPI {
   @POST("/login.php")
   public void getFeed(String username,String password,Callback<LoginResponse> response);
}

public interface LoginAPI {
   @POST("/login.php")
   public void getFeed(@Field("username") String username, @Field("password")String password,Callback<LoginResponse> response);    
}

并检查是否有效

答案 2 :(得分:-1)

如果您尝试将用户名和密码添加为网址参数,即

?username=XXX&password=YYYY

变化     公共接口LoginAPI {        @POST( “/ login.php中”)        public void getFeed(String username,String password,Callback response);     }

public interface LoginAPI {
   @POST("/login.php")
   public void getFeed(@Query("username") String username, @Query("password") String password,Callback<LoginResponse> response);    
}