Java 如何在外部客户机中传递头,尤其是HTTP头?

Java 如何在外部客户机中传递头,尤其是HTTP头?,java,spring-boot,spring-cloud-feign,Java,Spring Boot,Spring Cloud Feign,我尝试使用Rest模板传递http头并按预期工作,但有些人认为它不能与外部客户机一起工作 Rest客户端代码:- import org.springframework.http.HttpHeaders; RestTemplate restTemplate = new RestTemplate(); HttpHeaders httpHeader = new HttpHeaders(); httpHeader.set("appsecret-proof", header); HttpEntity&l

我尝试使用Rest模板传递http头并按预期工作,但有些人认为它不能与外部客户机一起工作

Rest客户端代码:-

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客户给出的错误为:

{"error":{"message":"Authentication credentials could not be found.","type":"Authentication Error","code":404,"sub_code":0}}.

在外部客户机中对令牌进行硬编码,但仍会给出相同的错误。这可能是错误的标题…任何建议如何设置头在外国客户端

如果您使用的是外挂,那么您应该这样构造呼叫:

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中,作为令牌的对应值。

@RequestHeader
应与spring cloud-feign一起使用。您的代码中可能存在不同的错误。你有404错误。您是否尝试为
getMemberGroup
方法添加请求正文参数,因为它是POST,但没有任何请求正文。是的…没有任何请求正文…最初尝试使用resttemplate时,我也遇到了相同的错误…然后我意识到我输入了错误的标头数据类型,我更正了标头的数据类型,然后它按预期工作。
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);