我在Android Studio上写过Java代码。我做了登录方法,在我的代码中发生了一些事情。它没有返回正确的返回值。返回值始终为false。虽然我在Android Studio上检查了logd
函数,但是布尔变量已经正确地改变了,但是它在方法的末尾又改变了,所以登录方法总是返回false&我无法继续登录。
请帮我解决这个困惑的时刻。任何回答都将不胜感激,非常感谢。
public class AppLogin {
UniversalResponse uniresp = new UniversalResponse();
private Boolean hasil = true ;
public Boolean getHasil() {
return hasil;
}
public void setHasil(Boolean hasil) {
this.hasil = hasil;
}
public Boolean authorize(String user, String passwd){
APIInterface apiInterface;
LoginModel logindata = new LoginModel();
logindata.setUsername(user);
logindata.setPassword(passwd);
apiInterface = APIClient.getClient().create(APIInterface.class);
//Call<UniversalResponse> call = apiInterface.doLogin(logindata.getUsername(), logindata.getPassword());
Call<UniversalResponse> call = apiInterface.doLogin(user, passwd);
call.enqueue(new Callback<UniversalResponse>() {
@Override
public void onResponse(Call<UniversalResponse> call, Response<UniversalResponse> response)
{
UniversalResponse uniresp = response.body();
Log.d("Login Module - Value dr Hasil sebelum Reponse Successfull" , getHasil().toString());
if(response.isSuccessful() ) {
Log.d("Nama Service", uniresp.getService());
Log.d("Isi Message", uniresp.getMessage());
Log.d("Login Module - Value dr Hasil di DALAM Reponse Successfull" , getHasil().toString());
if ( uniresp.getMessage().equals("Success") && uniresp.getService().equals("MobileAppLogin") )
{
setHasil(true);
Log.d("Login Module - Value dr Hasil di DALAM Reponse Successfull dlm If Getmessasge Equals" , getHasil().toString());
}
else { setHasil(false);
Log.d("Login Module - Value dr Hasil di DALAM Reponse Successfull dlm If Getmessasge Equals Equals ELSE Section" , getHasil().toString()); }
}
Log.d("Login Module - Value dr Hasil di LUAR Reponse Successfull" , getHasil().toString());
}
@Override
public void onFailure(Call<UniversalResponse> call, Throwable t) {
call.cancel();
hasil= false;
}
});
Log.i("Login Module - Value dr Hasil di DEKAT RETURN PALING BAWAH" , getHasil().toString());
return getHasil();
}
}
不幸的是,您编写代码的方式并不总是有效的。这是异步任务作为同步任务运行的典型情况。
在onfailure
和onresponse
中,hasil
的值被更改,在从方法authorize
返回之前,可能没有机会完成。
您需要更改将hasil
的值传播到调用代码的方式,以便能够使其工作。有几种方法可以做到这一点,其中一种简单的方法是进行回调,而无需对代码进行太多更改:
interface Callback {
void onResponse(boolean hasil);
void onError(Throwable t);
}
public void authorize(String user, String passwd, Callback callback){
// ...
call.enqueue(new Callback<UniversalResponse>() {
@Override
public void onResponse(Call<UniversalResponse> call, Response<UniversalResponse> response)
{
if(response.isSuccessful() ) {
if ( uniresp.getMessage().equals("Success") && uniresp.getService().equals("MobileAppLogin") )
{
callback.onResponse(true);
}
else { callback.onResponse(false); }
}
}
@Override
public void onFailure(Call<UniversalResponse> call, Throwable t) {
callback.onError(t);
}
});
}
当我尝试登录系统时,我得到的信息表明我输入了不正确的数据。该方法返回false,并显示以下消息: 身份验证失败,因为App\Security\LoginFormAuthentiator::churkCre的als()没有返回true。 我根据symfony文档进行日志记录https://symfony.com/doc/current/security/form_login_setup 实体用户 证
我正在尝试使用equals方法与对象进行比较,但它总是返回false
以下是 IdP 在 OpenAm 的元数据文件 SP位于:http://mysp.com/ 可以发布SAML响应的SP的验证url位于:http://mysp.com/login 以下请求适用于 SSO 登录:http://myidp.com/openam/idpssoinit?metaAlias=/idp 当我发布 SAML 请求以 http://myidp.com/openam/SSOPOST
我是Spring的新手,我一直在尝试使用Spring Security性实现一个简单的登录页面。但在提供登录凭据后,它总是转到拒绝访问的url。loadUserByUsername()方法总是在我提供正确的用户名和密码后返回一个用户。但我不知道如何找到用户对象返回后会发生什么。 用户只有一个角色。该方法返回具有超级用户角色的用户。 这是我的Spring Security配置类 这是我的UserDe
在.NET Framework 4.5中,由Trim()方法调用的专用TrimHelper()方法使用以下条件来确定是否需要修剪字符:(由.NET Reflector反编译的代码) 我想知道为什么IsBOMWhitesspace方法总是返回false?? 这是微软计划在未来改变/扩展的吗?例如,通过检查char是否为‘u efff’并在这种情况下返回true?
我有一个返回对象的方法。我想使用spring AOP在日志中打印该对象的值。我怎样才能做到呢?