Я пробовал использовать Rest Template, передавая http-заголовки, и он работал, как и ожидалось, но почему-то он не работал с фиктивным клиентом.
Код остальных клиентов: -
import org.springframework.http.HttpHeaders;
RestTemplate restTemplate = new RestTemplate();
HttpHeaders httpHeader = new HttpHeaders();
httpHeader.set("appsecret-proof", header);
HttpEntity<?> request = new HttpEntity<>(httpHeader);
String url = "https://localhost/groups/{pathVariable}/members/";
Map<String, String> map = new HashMap<>();
map.put("pathVariable", pathVariable);
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url)
.queryParam("token", token);
String uriBuilder = builder.build().toString();
ResponseEntity<MemberObject> responseEntity = restTemplate.exchange(uriBuilder, HttpMethod.POST, request,MemberObject.class, map);
MemberObject memberObject = null;
if (responseEntity != null && responseEntity.getBody() != null) {
memberObject = responseEntity.getBody();
}
Код клиента Fegin: -
import org.springframework.web.bind.annotation.RequestHeader;
@PostMapping(value = "/groups/?token=xyz")
MemberObject getMemberGroup(@RequestHeader("appsecret-proof") String appsecretProof);
Но клиент fegin выдает ошибку:
{"error":{"message":"Authentication credentials could not be found.","type":"Authentication Error","code":404,"sub_code":0}}.
Жестко запрограммированный токен в клиенте faign все еще дает ту же ошибку. Это может быть ошибка с заголовками .... любое предложение, как настроить заголовок в ложном клиенте.
Да... у него нет тела запроса... изначально, когда я пытался использовать resttemplate в то время, я получил ту же ошибку... затем я понял, что ввел неправильный тип данных заголовка, я исправил тип данных заголовка, после чего он работает как ожидал.




Вот как вы должны структурировать вызов, если вы используете Feign:
import feign.Headers;
import feign.Param;
import feign.RequestLine;
...
@RequestLine("POST /groups/?token = {appSecretProof}")
@Headers("Content-Type: application/json")
MemberObject getMemberGroup(@Param("appSecretProof") String appSecretProof);
В приведенном выше фрагменте значение приложениеSecretProof подставляется в URL-адрес во время выполнения в качестве соответствующего значения жетон.
@RequestHeaderдолжен работать с симуляцией весеннего облака. Вероятно, в вашем коде может быть другая ошибка. Вы получили ошибку 404. Вы пытались добавить параметр тела запроса для своего методаgetMemberGroup, потому что это POST, но не имеет тела запроса.