|
@@ -0,0 +1,235 @@
|
|
|
|
|
+package com.template.common.utils;
|
|
|
|
|
+
|
|
|
|
|
+import org.apache.http.HttpEntity;
|
|
|
|
|
+import org.apache.http.NameValuePair;
|
|
|
|
|
+import org.apache.http.client.config.RequestConfig;
|
|
|
|
|
+import org.apache.http.client.entity.UrlEncodedFormEntity;
|
|
|
|
|
+import org.apache.http.client.methods.CloseableHttpResponse;
|
|
|
|
|
+import org.apache.http.client.methods.HttpGet;
|
|
|
|
|
+import org.apache.http.client.methods.HttpPost;
|
|
|
|
|
+import org.apache.http.client.utils.URIBuilder;
|
|
|
|
|
+import org.apache.http.entity.ContentType;
|
|
|
|
|
+import org.apache.http.entity.StringEntity;
|
|
|
|
|
+import org.apache.http.impl.client.CloseableHttpClient;
|
|
|
|
|
+import org.apache.http.impl.client.HttpClients;
|
|
|
|
|
+import org.apache.http.message.BasicNameValuePair;
|
|
|
|
|
+import org.apache.http.util.EntityUtils;
|
|
|
|
|
+import org.springframework.http.ResponseEntity;
|
|
|
|
|
+import org.springframework.web.client.RestTemplate;
|
|
|
|
|
+import org.springframework.web.util.UriComponentsBuilder;
|
|
|
|
|
+
|
|
|
|
|
+import java.io.ByteArrayOutputStream;
|
|
|
|
|
+import java.io.IOException;
|
|
|
|
|
+import java.io.InputStream;
|
|
|
|
|
+import java.net.URI;
|
|
|
|
|
+import java.nio.Buffer;
|
|
|
|
|
+import java.nio.charset.Charset;
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+import java.util.Map;
|
|
|
|
|
+
|
|
|
|
|
+public class HttpClientUtil {
|
|
|
|
|
+
|
|
|
|
|
+ // http请求配置
|
|
|
|
|
+ private static RequestConfig config = RequestConfig.custom()
|
|
|
|
|
+ // 连接超时时间(毫秒)
|
|
|
|
|
+ .setConnectTimeout(5000)
|
|
|
|
|
+ // 数据读取超时时间(毫秒)
|
|
|
|
|
+ .setSocketTimeout(10000)
|
|
|
|
|
+ // 连接不夠用的等待时间(毫秒)
|
|
|
|
|
+ .setConnectionRequestTimeout(1000)
|
|
|
|
|
+ .build();
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ public static String doGet(String url, Map<String, String> param) {
|
|
|
|
|
+ // 创建Httpclient对象
|
|
|
|
|
+ CloseableHttpClient httpclient = HttpClients.createDefault();
|
|
|
|
|
+
|
|
|
|
|
+ String resultString = "";
|
|
|
|
|
+ CloseableHttpResponse response = null;
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 创建uri
|
|
|
|
|
+ URIBuilder builder = new URIBuilder(url);
|
|
|
|
|
+ if (param != null) {
|
|
|
|
|
+ for (String key : param.keySet()) {
|
|
|
|
|
+ builder.addParameter(key, param.get(key));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ URI uri = builder.build();
|
|
|
|
|
+
|
|
|
|
|
+ // 创建http GET请求
|
|
|
|
|
+ HttpGet httpGet = new HttpGet(uri);
|
|
|
|
|
+ httpGet.setConfig(config);
|
|
|
|
|
+ // 执行请求
|
|
|
|
|
+ response = httpclient.execute(httpGet);
|
|
|
|
|
+ // 判断返回状态是否为200
|
|
|
|
|
+ if (response.getStatusLine().getStatusCode() == 200) {
|
|
|
|
|
+ resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ try {
|
|
|
|
|
+ if (response != null) {
|
|
|
|
|
+ response.close();
|
|
|
|
|
+ }
|
|
|
|
|
+ httpclient.close();
|
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return resultString;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public static String doGet(String url) {
|
|
|
|
|
+ return doGet(url, null);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public static String doPost(String url, Map<String, String> param) {
|
|
|
|
|
+ // 创建Httpclient对象
|
|
|
|
|
+ CloseableHttpClient httpClient = HttpClients.createDefault();
|
|
|
|
|
+ CloseableHttpResponse response = null;
|
|
|
|
|
+ String resultString = "";
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 创建Http Post请求
|
|
|
|
|
+ HttpPost httpPost = new HttpPost(url);
|
|
|
|
|
+ httpPost.setConfig(config);
|
|
|
|
|
+ // 创建参数列表
|
|
|
|
|
+ if (param != null) {
|
|
|
|
|
+ List<NameValuePair> paramList = new ArrayList<>();
|
|
|
|
|
+ for (String key : param.keySet()) {
|
|
|
|
|
+ paramList.add(new BasicNameValuePair(key, param.get(key)));
|
|
|
|
|
+ }
|
|
|
|
|
+ // 模拟表单
|
|
|
|
|
+ UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);
|
|
|
|
|
+ httpPost.setEntity(entity);
|
|
|
|
|
+ }
|
|
|
|
|
+ // 执行http请求
|
|
|
|
|
+ response = httpClient.execute(httpPost);
|
|
|
|
|
+ resultString = EntityUtils.toString(response.getEntity(), "utf-8");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ try {
|
|
|
|
|
+ response.close();
|
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return resultString;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public static String doPost(String url) {
|
|
|
|
|
+ return doPost(url, null);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public static String doPostJson(String url, String json) {
|
|
|
|
|
+ // 创建Httpclient对象
|
|
|
|
|
+ CloseableHttpClient httpClient = HttpClients.createDefault();
|
|
|
|
|
+ CloseableHttpResponse response = null;
|
|
|
|
|
+ String resultString = "";
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 创建Http Post请求
|
|
|
|
|
+ HttpPost httpPost = new HttpPost(url);
|
|
|
|
|
+ httpPost.setConfig(config);
|
|
|
|
|
+ // 创建请求内容
|
|
|
|
|
+ StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);
|
|
|
|
|
+ httpPost.setEntity(entity);
|
|
|
|
|
+ // 执行http请求
|
|
|
|
|
+ response = httpClient.execute(httpPost);
|
|
|
|
|
+ resultString = EntityUtils.toString(response.getEntity(), "utf-8");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ try {
|
|
|
|
|
+ response.close();
|
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return resultString;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /* 发送 post请求 用HTTPclient 发送请求*/
|
|
|
|
|
+ public static byte[] post(String URL, String json) {
|
|
|
|
|
+ String obj = null;
|
|
|
|
|
+ InputStream inputStream = null;
|
|
|
|
|
+ Buffer reader = null;
|
|
|
|
|
+ byte[] data = null;
|
|
|
|
|
+ // 创建默认的httpClient实例.
|
|
|
|
|
+ CloseableHttpClient httpclient = HttpClients.createDefault();
|
|
|
|
|
+ // 创建httppost
|
|
|
|
|
+ HttpPost httppost = new HttpPost(URL);
|
|
|
|
|
+ httppost.setConfig(config);
|
|
|
|
|
+ httppost.addHeader("Content-type", "application/json; charset=utf-8");
|
|
|
|
|
+ httppost.setHeader("Accept", "application/json");
|
|
|
|
|
+ try {
|
|
|
|
|
+ StringEntity s = new StringEntity(json, Charset.forName("UTF-8"));
|
|
|
|
|
+ s.setContentEncoding("UTF-8");
|
|
|
|
|
+ httppost.setEntity(s);
|
|
|
|
|
+ CloseableHttpResponse response = httpclient.execute(httppost);
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 获取相应实体
|
|
|
|
|
+ HttpEntity entity = response.getEntity();
|
|
|
|
|
+ if (entity != null) {
|
|
|
|
|
+ inputStream = entity.getContent();
|
|
|
|
|
+ data = readInputStream(inputStream);
|
|
|
|
|
+ }
|
|
|
|
|
+ return data;
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ response.close();
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ // 关闭连接,释放资源
|
|
|
|
|
+ try {
|
|
|
|
|
+ httpclient.close();
|
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return data;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /** 将流 保存为数据数组
|
|
|
|
|
+ * @param inStream
|
|
|
|
|
+ * @return
|
|
|
|
|
+ * @throws Exception
|
|
|
|
|
+ */
|
|
|
|
|
+ public static byte[] readInputStream(InputStream inStream) throws Exception {
|
|
|
|
|
+ ByteArrayOutputStream outStream = new ByteArrayOutputStream();
|
|
|
|
|
+ // 创建一个Buffer字符串
|
|
|
|
|
+ byte[] buffer = new byte[1024];
|
|
|
|
|
+ // 每次读取的字符串长度,如果为-1,代表全部读取完毕
|
|
|
|
|
+ int len = 0;
|
|
|
|
|
+ // 使用一个输入流从buffer里把数据读取出来
|
|
|
|
|
+ while ((len = inStream.read(buffer)) != -1) {
|
|
|
|
|
+ // 用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度
|
|
|
|
|
+ outStream.write(buffer, 0, len);
|
|
|
|
|
+ }
|
|
|
|
|
+ // 关闭输入流
|
|
|
|
|
+ inStream.close();
|
|
|
|
|
+ // 把outStream里的数据写入内存
|
|
|
|
|
+ return outStream.toByteArray();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ public static void main(String[] args) {
|
|
|
|
|
+ RestTemplate restTemplate = new RestTemplate();
|
|
|
|
|
+ try {
|
|
|
|
|
+ String baseUrl = "http://api.tianditu.gov.cn/geocoder";
|
|
|
|
|
+ UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(baseUrl)
|
|
|
|
|
+ .queryParam("ds", "{\"keyWord\":\"江西省宜春市靖安县墨轩湖大道1号\"}")
|
|
|
|
|
+ .queryParam("tk", "523b39fb1b7a04863f8ff79b204e9dc9");
|
|
|
|
|
+ String url = builder.toUriString();
|
|
|
|
|
+ ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
|
|
|
|
|
+ System.out.println(response.getBody());
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|