CSRF令牌验证失败:Retrofict Post

CSRF令牌验证失败:Retrofict Post,post,sap,retrofit2,csrf-protection,android-webservice,Post,Sap,Retrofit2,Csrf Protection,Android Webservice,我正在开发一个Android应用程序,我需要将数据发布到一个服务(SAP hybris marketing) 为此,我首先从服务获取csrf令牌,然后尝试使用该令牌发布json数据以进行身份验证。 这是我的代码: public interface APIService { @POST("CUAN_IMPORT_SRV/ImportHeaders") @Headers("Content-Type: application/json") Call<String> savePost(@H

我正在开发一个Android应用程序,我需要将数据发布到一个服务(SAP hybris marketing)

为此,我首先从服务获取csrf令牌,然后尝试使用该令牌发布json数据以进行身份验证。 这是我的代码:

public interface APIService {

@POST("CUAN_IMPORT_SRV/ImportHeaders")
@Headers("Content-Type: application/json")
Call<String> savePost(@Header("Authorization") String bearer, @Header("X-CSRF-Token") String token, @Body String jsonContact);

@GET("CUAN_IMPORT_SRV/")
Call<String> getCall(@Header("Authorization") String bearer, @Header("X-CSRF-Token") String token ) ;
公共接口服务{
@POST(“CUAN\U进口/SRV进口商”)
@标题(“内容类型:application/json”)
调用savePost(@Header(“Authorization”)字符串承载、@Header(“X-CSRF-Token”)字符串令牌、@Body String jsonContact);
@获取(“CUAN\u IMPORT\u SRV/”)
Call getCall(@Header(“授权”)字符串承载,@Header(“X-CSRF-Token”)字符串令牌);
}

public void sendGet(最终JSONObject JSONObject){
mAPIService.getCall(“基本mybasicauthenticationtoken”,“Fetch”).enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
if(response.issusccessful()){
System.out.println(response.headers().get(“X-CSRF-Token”);
Log.i(标签“getsubmittedtoapi”);
token=response.headers().get(“X-CSRF-token”);
Log.i(标记,“TOKEN=”+TOKEN);
mAPIService.savePost(“基本mybasicauthenticationtoken”,token,jsonObject.toString()).enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
if(response.issusccessful()){
System.out.println(response.body().toString());
Log.i(标记“post submitted to API.”+response.body().toString());
}
试一试{
System.out.println(response.errorBody().string());
}捕获(IOE异常){
e、 printStackTrace();
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
System.out.println(“错误公告”);
Log.e(标签“无法向API提交帖子”);
}
});
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Log.e(标记“无法提交get到API”);
t、 printStackTrace();
}
});
GET调用工作正常,并为我提供了令牌:

I/ContentValues:提交给API。 令牌=lV6pgxm6m3qw9uGh5ZcaRg==

但是,当我尝试发布数据时,我得到以下消息:

I/System.out:CSRF令牌验证失败

有人能帮我解决这个问题吗

public void sendGet(final JSONObject jsonObject) {

    mAPIService.getCall("Basic mybasicauthenticationtoken", "Fetch").enqueue(new Callback<String>() {
        @Override
        public void onResponse(Call<String> call, Response<String> response) {

            if(response.isSuccessful()) {
                System.out.println(response.headers().get("X-CSRF-Token"));
                Log.i(TAG, "get submitted to API." );

                token = response.headers().get("X-CSRF-Token");
                Log.i(TAG, "TOKEN = " + token );

                mAPIService.savePost("Basic mybasicauthenticationtoken", token, jsonObject.toString()).enqueue(new Callback() {
                    @Override
                    public void onResponse(Call call, Response response) {


                        if(response.isSuccessful()) {
                            System.out.println(response.body().toString());
                            Log.i(TAG, "post submitted to API." + response.body().toString());
                        }
                        try {
                            System.out.println(response.errorBody().string());
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }

                    @Override
                    public void onFailure(Call call, Throwable t) {
                        System.out.println("ERROR POST");
                        Log.e(TAG, "Unable to submit post to API.");
                    }
                });
            }
        }

        @Override
        public void onFailure(Call<String> call, Throwable t) {
            Log.e(TAG, "Unable to submit get to API.");
           t.printStackTrace();
        }
    });