私のアプリケーションでは、ログイン/ページを作成します。ログインページでトークンをAndroidのサーバーに送信する方法
私は、クライアントからサーバへのトークンユーザー名、パスワード、を送ります。
私はUSERからユーザー名とパスワードを取得し、要求のHEADER
からトークンを取得する必要があります。
クライアントとサーバーの接続には、Retorfit 2.2.0
ライブラリを使用します。インターフェイスクラスから
コード:活動中の
@POST("User/Authenticate")
Call<LoginResponse> getLoginResponse(@Header("Token") String token, @Body LoginDatum loginDatum);
コード:LogCatで
public void getLogin(String username, String password) {
final LoginDatum loginDatum = new LoginDatum();
loginDatum.setUsername(username);
loginDatum.setPassword(password);
InterfaceApi api = ApiClient.getClient().create(InterfaceApi.class);
Call<LoginResponse> call = api.getLoginResponse(sendToken, loginDatum);
Log.e("tokenTAG", "Token : " + sendToken);
call.enqueue(new Callback<LoginResponse>() {
@Override
public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) {
LoginResponse loginResponse = response.body();
String token = response.headers().get("Token");
if (token != null) {
sendToken = token;
Log.e("tokenTAG", "Token : " + sendToken);
}
if (loginResponse.getStatusCode() == 200) {
Toasty.success(context, context.getResources().getString(R.string.welcome) + " " +
loginResponse.getData().getName(), Toast.LENGTH_LONG, true).show();
} else {
Toasty.error(context, loginResponse.getStatusMessage() + "", Toast.LENGTH_LONG, true).show();
}
loadProgress.get(0).setVisibility(View.GONE);
loginBtn.setVisibility(View.VISIBLE);
btnShadow.setVisibility(View.VISIBLE);
}
@Override
public void onFailure(Call<LoginResponse> call, Throwable t) {
loadProgress.get(0).setVisibility(View.GONE);
loginBtn.setVisibility(View.VISIBLE);
btnShadow.setVisibility(View.VISIBLE);
Toasty.error(context, context.getResources().getString(R.string.failRequest),
Toast.LENGTH_LONG, true).show();
}
});
}
そして、私にこれを示しています
tokenTAG: Token : null
tokenTAG: Token : MKGKFPOVRMU4MRK0STNDO20RA2MPEWT7Y1N2WUM5QLIXJX2TEOM9APGUTYJMD8R42WFVESD8GRXCTCINA2LZKU7JV2I7KA2R4N5W
しかし、私はこのコードでトークンを送信したいとき:Call<LoginResponse> call = api.getLoginResponse(sendToken, loginDatum);
それは私にnullを示しています。
私はこの行:Call<LoginResponse> call = api.getLoginResponse(sendToken, loginDatum);
を要求コールバックを生成するために使用しましたが、この行のトークンはではなく、NUllです。
どうすれば修正できますか?
これをブレークポイントでデバッグして、値がnullかnoかを確認することができます – Raghunandan
どこでsendToken変数を初期化しましたか?行で:Call call = api.getLoginResponse(sendToken、loginDatum);あなたのsendTokenはnullです。 –