改型Android的登录活动
我是android新手,我试图理解改型库以便在登录应用程序中使用它,但我无法让它工作。这是我的示例代码 LoginAPI.java改型Android的登录活动,android,retrofit,Android,Retrofit,我是android新手,我试图理解改型库以便在登录应用程序中使用它,但我无法让它工作。这是我的示例代码 LoginAPI.java public interface LoginAPI { @POST("/login.php") public void getFeed(String username,String password,Callback<LoginResponse> response); } 公共接口LoginAPI{ @POST(“/login.php
public interface LoginAPI {
@POST("/login.php")
public void getFeed(String username,String password,Callback<LoginResponse> response);
}
公共接口LoginAPI{
@POST(“/login.php”)
public void getFeed(字符串用户名、字符串密码、回调响应);
}
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();
}
});
}
});
}
login.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
RestAdapter RestAdapter=new RestAdapter.Builder()
.setEndpoint(“https://xxx.xxx.xxx.xxx")
.build();
LoginAPI api=restAdapter.create(LoginAPI.class);
getFeed(用户名、密码、新回调(){
@凌驾
public void成功(LoginResponse LoginResponse、Response-Response){
Toast.makeText(MainActivity.this,“登录”,Toast.LENGTH_LONG.show();
}
@凌驾
公共无效失败(错误){
Toast.makeText(MainActivity.this,“登录失败”,Toast.LENGTH_LONG.show();
}
});
}
});
}
在单独的线程或异步任务上进行改装调用
试试这个
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();
});
login.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Thread fetch=新线程(new Runnable()){
@凌驾
公开募捐{
RestAdapter RestAdapter=new RestAdapter.Builder()
.setEndpoint(“https://xxx.xxx.xxx.xxx")
.build();
LoginAPI api=restAdapter.create(LoginAPI.class);
getFeed(用户名、密码、新回调(){
@凌驾
public void成功(LoginResponse LoginResponse、Response-Response){
Log.d(“响应”、“登录”);
}
@凌驾
公共无效失败(错误){
Log.d(“响应”、“失败”);
}
});
}
}
fetch.start();
});
Toast可能无法从其他线程使用Log.d()。我猜您的界面中缺少注释,请替换
public interface LoginAPI {
@POST("/login.php")
public void getFeed(String username,String password,Callback<LoginResponse> response);
}
公共接口LoginAPI{
@POST(“/login.php”)
public void getFeed(字符串用户名、字符串密码、回调响应);
}
与
公共接口LoginAPI{
@POST(“/login.php”)
public void getFeed(@Field(“username”)字符串username,@Field(“password”)字符串password,回调响应);
}
如果您试图将用户名和密码添加为url参数,即
?username=XXX&password=YYYY
改变
公共接口LoginAPI{
@POST(“/login.php”)
public void getFeed(字符串用户名、字符串密码、回调响应);
}
与
公共接口LoginAPI{
@POST(“/login.php”)
public void getFeed(@Query(“username”)字符串username、@Query(“password”)字符串password、回调响应);
}
在单独的线程或异步任务上进行改装调用,使用现有代码是否会出错?如果是,请发布日志。您面临的错误是什么?确实,您不需要在单独的线程或异步任务上进行调用。我尝试过,但它会给我一个错误,未找到改装批注。如果我放置批注,则会收到错误消息@Field p参数只能与表单编码一起使用……您确定login.php REST调用响应正确吗?它是否给出响应?我的意思是改装调用。
?username=XXX&password=YYYY
public interface LoginAPI {
@POST("/login.php")
public void getFeed(@Query("username") String username, @Query("password") String password,Callback<LoginResponse> response);
}