外部 API を使用していくつかのリソースを GET および POST しています。ローカルで私のコードは、さまざまなエンドポイント (GET、POST ...) の呼び出しや Postman でも正常に動作しますが、別のプレートフォーム (場所) でコードを実行しようとすると、リソースは次のとおりです)、POST 呼び出しが原因で 412 HTTP エラーが発生しました。インターネットで調べたところ、(変更しようとした) エンティティの ETagd を生成し、それを私のヘッダーに追加する必要があることがわかりました。 POST エンドポイント。そのために、ShallowEtagHeaderFilterと @Bean アノテーション (フィルター メソッドの上) と @SpringBootApplication アノテーションをクラスの上に使用しました。これが私のコードです。
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();
}
}
GET 応答ヘッダーで ETag パラメータを生成できないため ( reponse.headers() をチェックした後)、本当にあなたの助けが必要です。前もって感謝します!