如何使用Android中的Retrofit在标头请求中发送TOKEN

2 android json retrofit2

我应该送令牌到服务器,因为我使用Android的请求Retrofit.
我使用Get头令牌代码,我可以看到令牌:

 InterfaceApi api = ApiClient.getClient().create(InterfaceApi.class);
        Call<LoginResponse> call = api.getLoginResponse(loginDatum);

        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) {
                    Log.e("tokenTAG", "Token : " + token);
                }
                Toast.makeText(context, loginResponse.getStatusMessage() + "", Toast.LENGTH_SHORT).show();

                loadProgress.setVisibility(View.GONE);
                loginBtn.setVisibility(View.VISIBLE);
            }

            @Override
            public void onFailure(Call<LoginResponse> call, Throwable t) {
                loadProgress.setVisibility(View.GONE);
                loginBtn.setVisibility(View.VISIBLE);
            }
        });
                    } 
Run Code Online (Sandbox Code Playgroud)

但我应该将此标记在标题中发布到服务器,对于POST数据到服务器我使用此代码:

@POST("usersInfo/Authenticate")
Call<LoginResponse> getLoginResponse(@Body LoginDatum loginDatum);
Run Code Online (Sandbox Code Playgroud)

如何将令牌(String token = response.headers().get("Token"))发送到服务器上面的POST代码?

请帮帮我,我是业余爱好者.

Moh*_*uri 7

试试这段代码:

private String sendToken;
Run Code Online (Sandbox Code Playgroud)

用你的代码替换这段代码:

    InterfaceApi api = ApiClient.getClient().create(InterfaceApi.class);
    Call<LoginResponse> call = api.getLoginResponse(sendToken, loginDatum);

    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) {
                Log.e("tokenTAG", "Token : " + token);
                sendToken = token;
            }
            Toast.makeText(context, loginResponse.getStatusMessage() + "", Toast.LENGTH_SHORT).show();

            loadProgress.setVisibility(View.GONE);
            loginBtn.setVisibility(View.VISIBLE);
        }

        @Override
        public void onFailure(Call<LoginResponse> call, Throwable t) {
            loadProgress.setVisibility(View.GONE);
            loginBtn.setVisibility(View.VISIBLE);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

并替换此代码:

@POST("usersInfo/Authenticate")
Call<LoginResponse> getLoginResponse(@Header("Token") String token, @Body LoginDatum loginDatum);
Run Code Online (Sandbox Code Playgroud)