Android 单击登录后,什么也没有发生
您好,在下面的代码中我有一个登录应用程序。其中包含电子邮件id和密码。使用电子邮件id和密码进行注册时一切正常 现在,我正在获取电子邮件Id和密码,然后按下登录按钮,我只是检查状态是否成功。如果状态为“成功”,则转到其他活动 LoginActivity.java:Android 单击登录后,什么也没有发生,android,retrofit2,Android,Retrofit2,您好,在下面的代码中我有一个登录应用程序。其中包含电子邮件id和密码。使用电子邮件id和密码进行注册时一切正常 现在,我正在获取电子邮件Id和密码,然后按下登录按钮,我只是检查状态是否成功。如果状态为“成功”,则转到其他活动 LoginActivity.java: login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view
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
用于APIurl
根据不同用户进行相应更改时。例如,您正在根据用户id获取数据。使用调试程序发布日志详细信息是一个很好的方案。这里是您的if(response.issusccessful()){}?Not equals它的equals是包含
用于arraylist和比较使用的字符串equals。这取决于端点,如果它在查询参数中等待数据,然后您必须使用path,而且,在这种情况下,您应该咨询后端团队。另外,您不必像这样检查状态,响应是什么?正如@Ashish所说,response.issusccessful()字符串状态=response.body().getStatus().toString();将响应保存在状态字符串中。@barotia我给出了使用@path
的示例