使用Apache HttpClient 4.x发送Json数据

Apache HttpClient是Apache提供的一个开源组件,使用HttpClient可以很方便地进行Http请求的调用。自4.1版本开始,HttpClient的API发生了较大的改变,很多方法的调用方式已经和3.x版本不同。本文使用的是当前最新的4.5.3版本。

首先在pom文件中引入httpcomponents依赖包:

1 <dependency>
2     <groupId>org.apache.httpcomponents</groupId>
3     <artifactId>httpclient</artifactId>
4     <version>4.5.3</version>
5 </dependency>

本文展示的是POST请求。

 1 import java.io.IOException;
 2
 3 import org.apache.commons.lang3.ObjectUtils;
 4 import org.apache.commons.lang3.StringUtils;
 5 import org.apache.http.Consts;
 6 import org.apache.http.HttpStatus;
 7 import org.apache.http.ParseException;
 8 import org.apache.http.client.config.RequestConfig;
 9 import org.apache.http.client.methods.CloseableHttpResponse;
10 import org.apache.http.client.methods.HttpPost;
11 import org.apache.http.entity.ContentType;
12 import org.apache.http.entity.StringEntity;
13 import org.apache.http.impl.client.CloseableHttpClient;
14 import org.apache.http.impl.client.HttpClients;
15 import org.apache.http.util.EntityUtils;
16
17 /**
18  * @author
19  *
20  * @date 2017年5月18日 上午9:17:30
21  *
22  * @Description
23  */
24 public class HttpPostUtils {
25     /**
26      *
27      * @param uri
28      *            the request address
29      * @param json
30      *            the request data that must be a JSON string
31      * @param connectTimeout
32      *            the timeout in milliseconds until a connection is established
33      * @param connectionRequestTimeout
34      *            the timeout in milliseconds used when requesting a connection
35      *            from the connection manager
36      * @param socketTimeout
37      *            the socket timeout in milliseconds, which is the timeout for
38      *            waiting for data or, put differently, a maximum period
39      *            inactivity between two consecutive data packets
40      * @return null when method parameter is null, "", " "
41      * @throws IOException
42      *             if HTTP connection can not opened or closed successfully
43      * @throws ParseException
44      *             if response data can not be parsed successfully
45      */
46     public String postJson(String uri, String json, int connectTimeout, int connectionRequestTimeout, int socketTimeout)
47             throws IOException, ParseException {
48         if (StringUtils.isAnyBlank(uri, json)) {
49             return null;
50         }
51
52         CloseableHttpClient client = HttpClients.createDefault();
53         HttpPost post = new HttpPost(uri);
54         // Create request data
55         StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);
56         // Set request body
57         post.setEntity(entity);
58
59         RequestConfig config = RequestConfig.custom().setConnectTimeout(connectTimeout)
60                 .setConnectionRequestTimeout(connectionRequestTimeout).setSocketTimeout(socketTimeout).build();
61         post.setConfig(config);
62         // Response content
63         String responseContent = null;
64         CloseableHttpResponse response = null;
65         try {
66             response = client.execute(post);
67             if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
68                 responseContent = EntityUtils.toString(response.getEntity(), Consts.UTF_8.name());
69             }
70         } finally {
71             if (ObjectUtils.anyNotNull(response)) {
72                 response.close();
73             }
74             if (ObjectUtils.anyNotNull(client)) {
75                 client.close();
76             }
77         }
78         return responseContent;
79     }
80 }
时间: 2024-10-11 01:21:07

使用Apache HttpClient 4.x发送Json数据的相关文章

HttpClient发送Json数据到指定接口

项目中遇到将Json数据发送到指定接口,于是结合网上利用HttpClient进行发送. /** * post发送json数据 * @param url * @param param * @return */ private String doPost(String url, JSONObject param) { HttpPost httpPost = null; String result = null; try { HttpClient client = new DefaultHttpCli

Http post方式发送json数据

HttpClient模拟get,post请求并发送请求参数(json等) import java.io.IOException; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpclient.Header; import org.

java使用httpcomponents post发送json数据

一.适用场景 当我们向第三方系统提交数据的时候,需要调用第三方系统提供的接口.不同的系统提供的接口也不一样,有的是SOAP Webservice.RESTful Webservice 或其他的.当使用的是RESTful webservice的时候,就可以使用httpcomponents组件来完成调用. 如我们需要发起post请求,并将数据转成json格式,设置到post请求中并提交. url:"http://www.xxxxx.com/message" json数据格式 {"

httpClient post方法 解析json数据(向服务器传递,接受服务器传递)

import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.entity.UrlEncodedFormEnt

iOS开发网络篇—发送json数据给服务器以及多值参数

iOS开发网络篇—发送json数据给服务器以及多值参数 一.发送JSON数据给服务器 发送JSON数据给服务器的步骤: (1)一定要使用POST请求 (2)设置请求头 (3)设置JSON数据为请求体 代码示例: 1 #import "YYViewController.h" 2 3 @interface YYViewController () 4 5 @end 6 7 @implementation YYViewController 8 9 - (void)viewDidLoad 10

SpringMVC客户端发送json数据时报400错误

当测试客户端发送json数据给服务器时,找不到响应路径? 原来是参数类型不符,即使是json也要考虑参数的个数和类型 解决:将age请求参数由"udf"改为"3"或任意数字即可

[小项目] 获取手机联系人并且向服务器发送JSON数据

[小项目] 获取手机联系人并且向服务器发送JSON数据 好久没有写文档了...最近忙着带班,也没有时间学习新东西,今天刚好有个小Demo,就写了一下,顺便丰富一下我的博客吧! 首先说一下需求: 简单的说,就是一个程序,会获取手机的联系人列表,然后转换成JSON字符串数组,向指定服务器中发送数据...总感觉有侵犯别人隐私权的意味; 注:仅供学习使用,不要做违法的事情哟 这个程序我写的有点有条理,首先有几个工具类: 1. 判断是否联网的工具类(NetUtils) 2. 从手机中获取所有联系人的工具类

【转】iOS开发网络篇—发送json数据给服务器以及多值参数

原文: http://www.cnblogs.com/wendingding/p/3950132.html 一.发送JSON数据给服务器 发送JSON数据给服务器的步骤: (1)一定要使用POST请求 (2)设置请求头 (3)设置JSON数据为请求体 代码示例: 1 #import "YYViewController.h" 2 3 @interface YYViewController () 4 5 @end 6 7 @implementation YYViewController 8

[Windows Phone 8开发]使用HttpWebRequest和HttpWebResponse向服务器发送Json数据(POST方法)

public string szJson = ""; byte[] json; UploadClass up = new UploadClass(); public ValidatePage() { InitializeComponent(); } private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) { //我做了一个实现上传某些关键的Json数据,返回服务器Appid的功能,类似新浪微博