我是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();
}
});
}
});
}
答案 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);
}