Java SpringBoot:在POST请求时使用参数附加json
我需要使用params发出一个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”); 参数添加(新的
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());