簡體   English   中英

如何在偽客戶端(尤其是HTTP標頭)中傳遞標頭?

[英]How to pass header in feign client especially HTTP Headers?

我嘗試了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();
}

特定客戶代碼:-

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}}.

在偽裝客戶端中對令牌進行硬編碼仍然會產生相同的錯誤。 標頭可能是錯誤的。...有關在偽裝客戶端中設置標頭的任何建議。

如果您使用的是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);

在以上代碼段中,在執行時將appSecretProof的值替換為URL作為令牌的相應值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM