【发布时间】:2020-01-23 03:08:39
【问题描述】:
在我的方法中,我最初使用RestTemplate postForObject 方法将请求发布到端点。现在我必须添加默认的OAuth 令牌并将其作为Post 请求传递。有什么方法可以使用postForObject 将request 和Default Header 作为POST 请求的一部分传递?
最初我在下面使用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);
}
}
下面是getHttpEntity,我想通过 Post 请求传递
private HttpEntity getHttpEntity(Set <String>results) {
return new HttpEntity<>( null, getHttpHeaders() );
}
private HttpHeaders getHttpHeaders() {
return header.build();
}
}
【问题讨论】:
-
(1) 对于此类标头,您通常应该使用拦截器(它会修改每个请求)。 (2) 你应该看看
OAuth2RestTemplate,它已经为你设置了这个支持,包括来自各种来源的令牌解析。 -
对不起,我没有得到你的问题,你在上面的代码中传递了标题对吗?
-
是的,对,编辑了我的代码。我必须用
getHttpEntity替换它
标签: java spring-boot post http-headers resttemplate