Я использую GraphQL Service, он возвращает 406 Not Acceptable , если заголовок Accept равен text/plain
.
Ожидается, что он будет Accept as application/json
Итак, я попытался переопределить заголовки RestTeamplate. Однако кажется, что заголовок Accept test/plain
присутствует всегда. Я подтвердил это, включив отладку (logging.level.org.springframework.web.client.RestTemplate=DEBUG
)
Консоль
o.s.web.client.RestTemplate: Accept=[text/plain, application/json, application/*+json, */*]
o.s.web.client.RestTemplate: Writing [{products(query: "title:tow*", first: 10) {edges {node {id legacyResourceId title}}}}] as "application/graphql"
Вот код, который я пытался переопределить заголовок Accept
HttpHeaders headers = new HttpHeaders();
RestTemplate restTemplate = new RestTemplate();
headers.add("Content-Type","application/graphql");
headers.setAccept(Collections.singletonList(new MediaType("application","json")));
String content = "{products(query: \"title:tow*\", first: 10) {edges {node {id title}}}}";
HttpEntity<String> requestEntity = new HttpEntity<String>(content, headers);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
Я даже пробовал сначала удаляя заголовок Accept (headers.remove("Accept")
), а затем setAccept
, но он все равно не удаляет его из журнала.
Нужно ли что-то еще сделать?
Почему он не удаляет текст / простой из заголовка Accept?
Почему я вижу несколько опций в Принять, когда я установил только одну опцию?