Java SpringBoot:在POST请求时使用参数附加json

Java SpringBoot:在POST请求时使用参数附加json,java,spring,spring-boot,apache-httpclient-4.x,Java,Spring,Spring Boot,Apache Httpclient 4.x,我需要使用params发出一个POST请求,并附加一个JSON内容 到目前为止: CloseableHttpClient=HttpClients.createDefault(); HttpPost HttpPost=新的HttpPost(“http://localhost:8983/solr/arxius/update"); List params=new ArrayList(); 参数添加(新的BasicNameValuePair(“commitWithin”、“1000”); 参数添加(新的

我需要使用params发出一个
POST
请求,并附加一个JSON内容

到目前为止:

CloseableHttpClient=HttpClients.createDefault();
HttpPost HttpPost=新的HttpPost(“http://localhost:8983/solr/arxius/update");
List params=new ArrayList();
参数添加(新的BasicNameValuePair(“commitWithin”、“1000”);
参数添加(新的BasicNameValuePair(“覆盖”、“真”);
添加(新的BasicNameValuePair(“wt”、“json”);
字符串json=“…”;
//这里我需要附加json作为主体。。。
试一试{
setEntity(新的UrlEncodedFormEntity(参数));
CloseableHttpResponse response=client.execute(httpPost);
client.close();
}捕获(IOE异常){
e、 printStackTrace();
}
此处
curl
like请求:

curl 'http://localhost:8983/solr/arxius/update?_=1605619902909&commitWithin=1000&overwrite=true&wt=json'
  -H 'Content-type: application/json'
  --data-raw $'[{ "id": ... }]'
使用:

一种自包含、可重复的实体,从字符串中获取其内容

对于参数,请使用URIBuilder:

URIBuilder uriBuilder = new URIBuilder("http://localhost:8983/solr/arxius/update");
uriBuilder.addParameter("commitWithin",  "1000");
...
HttpHost httpPost = new HttpHost(uriBuilder.getHost(), uriBuilder.getPort(), uriBuilder.getScheme());    

您是否被迫使用apache http客户端?否则,您可以使用spring的rest模板。那么参数呢?@Jordi在创建
HttpPost
时使用
URIBuilder
,并添加每个参数:
URIBuilder.addParameter(“commitWithin”,“1000”)
有没有什么优雅的方法可以添加
内容类型:application/json
,而不用逐字逐句地写出来?@Jordi我不知道还有什么更优雅的方法
URIBuilder uriBuilder = new URIBuilder("http://localhost:8983/solr/arxius/update");
uriBuilder.addParameter("commitWithin",  "1000");
...
HttpHost httpPost = new HttpHost(uriBuilder.getHost(), uriBuilder.getPort(), uriBuilder.getScheme());