Android 单击登录后,什么也没有发生

Android 单击登录后,什么也没有发生,android,retrofit2,Android,Retrofit2,您好,在下面的代码中我有一个登录应用程序。其中包含电子邮件id和密码。使用电子邮件id和密码进行注册时一切正常 现在,我正在获取电子邮件Id和密码,然后按下登录按钮,我只是检查状态是否成功。如果状态为“成功”,则转到其他活动 LoginActivity.java: login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view

您好,在下面的代码中我有一个登录应用程序。其中包含电子邮件id和密码。使用电子邮件id和密码进行注册时一切正常

现在,我正在获取电子邮件Id和密码,然后按下登录按钮,我只是检查状态是否成功。如果状态为“成功”,则转到其他活动

LoginActivity.java:

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

                emailId = et_email.getText().toString();
                password = et_password.getText().toString();
               getlogindetails(emailId, password);

            }
        });


    }
private void getlogindetails(String emailId, String password) {

        if (!validate(emailId)) {
            et_email.requestFocus();
            et_email.setError("Please provide a valid email Id");
            return;
        }
        if (password.isEmpty()) {
            et_password.requestFocus();
            et_password.setError("Please provide password");
            return;
        }
        if (!CheckWifiAndMobileData.IsConnected(LoginActivity.this)) {
            Toast.makeText(LoginActivity.this, "Please check your internet connection", Toast.LENGTH_SHORT).show();
            return;
        }
String url = "http://172.24.1.1:9000";

        Retrofit retrofit = null;
        Log.d("123", "retrofit");

        if (retrofit == null) {
            retrofit = new Retrofit.Builder().baseUrl(url).addConverterFactory(GsonConverterFactory.create()).build();
            Log.d("123", "build();");
        }
        API1 service = retrofit.create(API1.class);

        Call<Login> call = service.authenticate(this.emailId, password);
        Log.i(TAG, "Sending---" + url + service + "\n" + "light_id:" + this.emailId + "\n" + "intensity:" + password );

        //final String EmailId = emailId;
        call.enqueue(new Callback<Login>() {
            @Override
            public void onResponse(Call<Login> call, Response<Login> response) {
                String status=response.body().getStatus().toString();
                if (status.contains("success")) {
                    // showResponse(response.body().toString());
                    Toast.makeText(LoginActivity.this, "Login successfully", Toast.LENGTH_SHORT).show();
                    Intent mainIntent;
                  mainIntent = new Intent(LoginActivity.this, DeviceControlActivity.class);
                  mainIntent.putExtra("emailId", LoginActivity.this.emailId);
                 startActivity(mainIntent);
                 finish();
                }
                else{
                    Toast.makeText(LoginActivity.this, "Invalid EmailId and password", Toast.LENGTH_SHORT).show();
//
                }
            }

            @Override
            public void onFailure(Call<Login> call, Throwable t) {
                Log.e(TAG, "Unable to submit post to API.");
            }
        });
    }
Method.java:

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

                emailId = et_email.getText().toString();
                password = et_password.getText().toString();
               getlogindetails(emailId, password);

            }
        });


    }
private void getlogindetails(String emailId, String password) {

        if (!validate(emailId)) {
            et_email.requestFocus();
            et_email.setError("Please provide a valid email Id");
            return;
        }
        if (password.isEmpty()) {
            et_password.requestFocus();
            et_password.setError("Please provide password");
            return;
        }
        if (!CheckWifiAndMobileData.IsConnected(LoginActivity.this)) {
            Toast.makeText(LoginActivity.this, "Please check your internet connection", Toast.LENGTH_SHORT).show();
            return;
        }
String url = "http://172.24.1.1:9000";

        Retrofit retrofit = null;
        Log.d("123", "retrofit");

        if (retrofit == null) {
            retrofit = new Retrofit.Builder().baseUrl(url).addConverterFactory(GsonConverterFactory.create()).build();
            Log.d("123", "build();");
        }
        API1 service = retrofit.create(API1.class);

        Call<Login> call = service.authenticate(this.emailId, password);
        Log.i(TAG, "Sending---" + url + service + "\n" + "light_id:" + this.emailId + "\n" + "intensity:" + password );

        //final String EmailId = emailId;
        call.enqueue(new Callback<Login>() {
            @Override
            public void onResponse(Call<Login> call, Response<Login> response) {
                String status=response.body().getStatus().toString();
                if (status.contains("success")) {
                    // showResponse(response.body().toString());
                    Toast.makeText(LoginActivity.this, "Login successfully", Toast.LENGTH_SHORT).show();
                    Intent mainIntent;
                  mainIntent = new Intent(LoginActivity.this, DeviceControlActivity.class);
                  mainIntent.putExtra("emailId", LoginActivity.this.emailId);
                 startActivity(mainIntent);
                 finish();
                }
                else{
                    Toast.makeText(LoginActivity.this, "Invalid EmailId and password", Toast.LENGTH_SHORT).show();
//
                }
            }

            @Override
            public void onFailure(Call<Login> call, Throwable t) {
                Log.e(TAG, "Unable to submit post to API.");
            }
        });
    }
private void getlogindetails(字符串emailId,字符串密码){
如果(!验证(电子邮件ID)){
et_email.requestFocus();
et_email.setError(“请提供有效的电子邮件Id”);
返回;
}
if(password.isEmpty()){
et_password.requestFocus();
et_password.setError(“请提供密码”);
返回;
}
如果(!CheckWifiAndMobileData.IsConnected(LoginActivity.this)){
Toast.makeText(LoginActivity.this,“请检查您的internet连接”,Toast.LENGTH_SHORT.show();
返回;
}
字符串url=”http://172.24.1.1:9000";
改装改装=空;
日志d(“123”,“改装”);
如果(改装==null){
改装=新建改装.Builder().baseUrl(url).addConverterFactory(GsonConverterFactory.create()).build();
Log.d(“123”,“build();”);
}
API1服务=改装.create(API1.class);
Call Call=service.authenticate(this.emailId,密码);
Log.i(标记“发送----”+url+service+“\n”+”灯号:“+this.emailId+”\n“+”强度:“+password”);
//最终字符串EmailId=EmailId;
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
字符串状态=response.body().getStatus().toString();
if(status.contains(“success”)){
//showResponse(response.body().toString());
Toast.makeText(LoginActivity.this,“登录成功”,Toast.LENGTH_SHORT.show();
意图主要意图;
mainIntent=新意图(LoginActivity.this、DeviceControlActivity.class);
maintent.putExtra(“emailId”,LoginActivity.this.emailId);
星触觉(主旨);
完成();
}
否则{
Toast.makeText(LoginActivity.this,“无效的电子邮件ID和密码”,Toast.LENGTH_SHORT.show();
//
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Log.e(标签“无法向API提交帖子”);
}
});
}
API1.java

 interface API1 {

    @POST("app_login/")
        Call<Login> authenticate(@Path("emailId") String emailId, @Path("password") String password);
    }
接口API1{
@POST(“应用程序登录/”)
调用身份验证(@Path(“emailId”)字符串emailId,@Path(“password”)字符串password);
}
为什么使用
@Path
内部接口方法。它必须是
@Body
@字段

不要使用
@Path

 @POST("app_login/")
        Call<Login> authenticate(@Path("emailId") String emailId, @Path("password") String password);
像这样使用

public class Request{
  private String emailId;
  private String password;
}
 @POST("app_login")
     Call<Login> authenticate(@Body Request data);
@FormUrlEncoded
@POST("app_login")
    Call<Login> authenticate(@Field("emailId") String emailId, @Field("password") String password);
@POST(“应用程序登录”)
调用身份验证(@Body请求数据);

像这样使用

public class Request{
  private String emailId;
  private String password;
}
 @POST("app_login")
     Call<Login> authenticate(@Body Request data);
@FormUrlEncoded
@POST("app_login")
    Call<Login> authenticate(@Field("emailId") String emailId, @Field("password") String password);
@FormUrlEncoded
@POST(“应用程序登录”)
调用身份验证(@Field(“emailId”)字符串emailId,@Field(“password”)字符串password);

注意:-
@Path
用于API
url
根据不同用户进行相应更改时。例如,您正在根据用户id获取数据。

使用调试程序发布日志详细信息是一个很好的方案。这里是您的if(response.issusccessful()){}?Not equals它的equals是
包含
用于arraylist和比较使用的字符串
equals。这取决于端点,如果它在查询参数中等待数据,然后您必须使用path,而且,在这种情况下,您应该咨询后端团队。另外,您不必像这样检查状态,响应是什么?正如@Ashish所说,response.issusccessful()字符串状态=response.body().getStatus().toString();将响应保存在状态字符串中。@barotia我给出了使用
@path
的示例