我应该将标题中的令牌发送到服务器,对于我使用Retrofit
的Android请求。
我使用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);
}
});
}
但是我应该在标题中将此标记发布到服务器,对于POST数据到服务器我使用此代码:
@POST("usersInfo/Authenticate")
Call<LoginResponse> getLoginResponse(@Body LoginDatum loginDatum);
如何将令牌( String token = response.headers().get("Token")
)发送到服务器上面的POST代码?
请帮帮我,我是业余爱好者。
答案 0 :(得分:6)
试试这段代码:
private String sendToken;
用您的代码替换此代码:
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);
}
});
}
并替换此代码:
@POST("usersInfo/Authenticate")
Call<LoginResponse> getLoginResponse(@Header("Token") String token, @Body LoginDatum loginDatum);
答案 1 :(得分:2)
使用@Header注释。对于你的情况,它会是这样的。
@POST("usersInfo/Authenticate")
Call<LoginResponse> getLoginResponse(
@Header("Token") String token,
@Body LoginDatum loginDatum
);