Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用RestTemplate传递标题?_Java_Spring Boot_Post_Http Headers_Resttemplate - Fatal编程技术网

Java 如何使用RestTemplate传递标题?

Java 如何使用RestTemplate传递标题?,java,spring-boot,post,http-headers,resttemplate,Java,Spring Boot,Post,Http Headers,Resttemplate,在我的方法中,我最初使用restemplate postForObject方法将请求发布到端点。现在我必须添加默认的OAuth令牌,并将其作为Post请求传递。是否有任何方法可以使用postForObject将request和Default Header作为POST请求的一部分传递 下面使用的首字母IpostForObject String result = restTemplate.postForObject(url, request, String.class); 我在找下面这样的东西

在我的方法中,我最初使用
restemplate postForObject
方法将请求发布到端点。现在我必须添加默认的
OAuth
令牌,并将其作为
Post
请求传递。是否有任何方法可以使用
postForObject
request
Default Header
作为POST请求的一部分传递

下面使用的首字母I
postForObject

 String result = restTemplate.postForObject(url, request, String.class);
我在找下面这样的东西

             restTemplate.exchange(url,HttpMethod.POST,getEntity(),String.class );
这是我的密码

    private final String url;
        private final MarkBuild header;

    public DataImpl(@Qualifier(OAuth) MarkBuild header,RestTemplate restTemplate) {
               this.restTemplate= restTemplate;
                this.header = header;
    }

    public void postJson(Set<String> results){
        try {
             Map<String, String> requestBody = new HashMap<>();
             requestBody.put("news", "data");
              JSONObject jsonObject = new JSONObject(requestBody);

             HttpEntity<String> request = new HttpEntity<String>(jsonObject.toString(), null);

            String result = restTemplate.postForObject(url, request, String.class);
        } 
    }
是否有任何方法可以同时传递请求和默认标头 是否使用postForObject作为POST请求的一部分

是的,有一种方法可以做到这一点,我可以举一个基本的例子:

HttpHeaders lHttpHeaders = new HttpHeaders();
lHttpHeaders.setContentType( MediaType.APPLICATION_JSON );//or whatever it's in your case
String payload="<PAYLOAD HERE>"
try
{
    String lResponseJson = mRestTemplate.postForObject( url, new HttpEntity<Object>( payload, lHttpHeaders ), String.class);
    return lResponseJson;
}
catch( Exception lExcp )
{
    logger.error( lExcp.getMessage(), lExcp );
}
HttpHeaders lHttpHeaders=新的HttpHeaders();
setContentType(MediaType.APPLICATION_JSON)//或者不管你的情况如何
字符串有效负载=“”
尝试
{
String lResponseJson=mRestTemplate.postForObject(url,新的HttpEntity(有效负载,LHTTpHeader),String.class);
返回lResponseJson;
}
捕获(异常lExcp)
{
logger.error(lExcp.getMessage(),lExcp);
}

如果这不起作用,请告诉我

(1)对于这种类型的头,通常应该使用拦截器(它修改每个请求)。(2) 您应该看看
OAuth2RestTemplate
,它已经为您设置了此支持,包括来自各种来源的令牌解析。很抱歉,我没有听到您的问题,您在上面的代码中传递头,对吗?对,编辑了我的代码。我必须用
getHttpEntity
替换它,如果答案正确,请不要忘记对答案进行投票
HttpHeaders lHttpHeaders = new HttpHeaders();
lHttpHeaders.setContentType( MediaType.APPLICATION_JSON );//or whatever it's in your case
String payload="<PAYLOAD HERE>"
try
{
    String lResponseJson = mRestTemplate.postForObject( url, new HttpEntity<Object>( payload, lHttpHeaders ), String.class);
    return lResponseJson;
}
catch( Exception lExcp )
{
    logger.error( lExcp.getMessage(), lExcp );
}