下面的代码片段展示了如何使用HttpClient发送带有JSON主体的POST请求。本例中的有效负载是包含id、first_name和last_name的用户信息。我们将有效负载放置在一个名为StringEntity的对象中,并将其内容类型设置为ContentType.APPLICATION_FORM_URLENCODED。
在这个post请求调用的另一端,可以使用HttpServletRequest.getParameter()方法在Java Servlet中读取数据。例如,要读取下面发送的JSON正文,我们可以调用request.getParameter("data")。这将给我们使用HttpClient Post请求发送的有效负载。
让我们跳入下面的代码片段:
package org.nhooo.example.httpclient; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.HttpClientBuilder; public class HttpPostJsonExample { public static void main(String[] args) throws Exception { String payload = "data={" + "\"username\": \"admin\", " + "\"first_name\": \"System\", " + "\"last_name\": \"Administrator\"" + "}"; StringEntity entity = new StringEntity(payload, ContentType.APPLICATION_FORM_URLENCODED); HttpClient httpClient = HttpClientBuilder.create().build(); HttpPost request = new HttpPost("http://localhost:8080/register"); request.setEntity(entity); HttpResponse response = httpClient.execute(request); System.out.println(response.getStatusLine().getStatusCode()); } }
Maven依赖
<!-- https://search.maven.org/remotecontent?filepath=org/apache/httpcomponents/httpclient/4.5.9/httpclient-4.5.9.jar --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.9</version> </dependency>