Generating ETag in GET response Header Java spring To solve 412 http error

542 Views Asked by At

I am using some external API to GET and POST some ressources, locally my code works fine with the call of different endPoints (GET, POST...) and even with Postman, but when i try to run my code in another platerform (where the ressources are), i get the 412 HTTP error due to a POST call : after looking on the internet, i found out that i should generate an ETagd of the entity (that i went to modify) and add it into the header of my POST endPoint. For that, i used ShallowEtagHeaderFilter and the @Bean annotation(above the filter method) and the @SpringBootApplication annotation above my class, here is my code :

package main.Runners;

import io.testproject.java.annotations.v2.Parameter;
import okhttp3.*;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.configurationprocessor.json.JSONArray;
import org.springframework.boot.configurationprocessor.json.JSONObject;
import org.springframework.context.annotation.Bean;
import org.springframework.web.filter.ShallowEtagHeaderFilter;
import javax.servlet.Filter;


@SpringBootApplication
public class ActionRunner {

    @Parameter(description = "the project ID")
    public static String projectId = "xxx";

    @Parameter(description = "the test ID")
    public static String testId = "yyy";


    public static void main(String[] args) throws Exception {

        try {

            OkHttpClient client = new OkHttpClient().newBuilder()
                                          .build();
            Request request = new Request.Builder()
                                      .url("https://api.testproject.io/v2/projects/"+projectId+"/tests/"+testId)
                                      .method("GET", null)
                                      .addHeader("Authorization", "nzmo4DI08ykizYgcp9-5cCTArlxq7k7zt9MYhGmTcRk1")
                                      .build();
            Response response = client.newCall(request).execute();

            System.out.println("================ this is our response headers ::: \n"+ response.headers());

        } catch(Exception e) {
            System.out.println(e);
        }
    }

    @Bean
    public ShallowEtagHeaderFilter shallowEtagHeaderFilter(){
        return new ShallowEtagHeaderFilter();
    }
}

I really need Your help since i cant generate any ETag parameter on my GET response header(after checking reponse.headers() ). Thanks in advance!

0

There are 0 best solutions below