package com.dsh.guns.modular.system.util.three; import com.alibaba.fastjson.JSONObject; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; 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.HttpClientBuilder; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URI; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; public class PlatformUtil { public static String doGet(String url, Map 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); // 执行请求 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 param) { // 创建Httpclient对象 CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse response = null; String resultString = ""; try { // 创建Http Post请求 HttpPost httpPost = new HttpPost(url); // 创建参数列表 if (param != null) { List 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,Map headers) { // 创建Httpclient对象 CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse response = null; String resultString = ""; try { // 创建Http Post请求 HttpPost httpPost = new HttpPost(url); // 添加http headers if (headers != null && headers.size() > 0) { for (String key : headers.keySet()) { httpPost.addHeader(key, headers.get(key)); } } // 创建请求内容 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; } public static String doPostJson1(String url, String json,Map headers) { // 创建Httpclient对象 CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse response = null; String resultString = ""; try { // 创建Http Post请求 HttpPost httpPost = new HttpPost(url); // 添加http headers if (headers != null && headers.size() > 0) { for (String key : headers.keySet()) { httpPost.addHeader(key, headers.get(key)); } } // 创建请求内容 StringEntity entity = new StringEntity(json, ContentType.create("application/x-www-form-urlencoded","UTF-8")); 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 doGet(String url, String param, Map headers, int timeout) { String result = ""; BufferedReader in = null; String reqUrl = url + "?" + param; try { // 构造httprequest设置 RequestConfig config = RequestConfig.custom().setConnectTimeout(timeout) .setConnectionRequestTimeout(timeout).build(); HttpClient client = HttpClientBuilder.create().setDefaultRequestConfig(config).build(); HttpGet htGet = new HttpGet(reqUrl); // 添加http headers if (headers != null && headers.size() > 0) { for (String key : headers.keySet()) { htGet.addHeader(key, headers.get(key)); } } // 读取数据 HttpResponse r = client.execute(htGet); in = new BufferedReader(new InputStreamReader(r.getEntity().getContent(), "UTF-8")); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送GET请求出现异常!" + e); e.printStackTrace(); } finally { try { if (in != null) { in = null; } } catch (Exception e2) { e2.printStackTrace(); } } return result; } /** * 价格预估 * @param host 访问路径 * @param appkey 秘钥 * @param appId 用户id * @param startLat 起点纬度 * @param startLng 起点经度 * @param startName 起点名称 * @param endLat 终点纬度 * @param endLng 终点经度 * @param endName 终点名称 * @param rideType 运力类型 * @param departureTime 出行时间 * @return */ public static JSONObject estimatesPrices(String host,String appkey,String appId,String startLat ,String startLng,String startName,String endLat,String endLng,String endName,String rideType,String departureTime){ Map map = new HashMap<>(); map.put("startLat", startLat); map.put("startLng", startLng); map.put("startName", startName); map.put("endLat", endLat); map.put("endLng", endLng); map.put("endName", endName); map.put("rideType", rideType); map.put("departureTime", departureTime); String jsonMsg =JSONObject.toJSONString(map); String signature = null; String url = "/api/platform/estimatesPrices"; TokenUtils.RequestEntity req = new TokenUtils.RequestEntity(); req.setReqMethod(TokenUtils.REQ_METHOD_GET); req.setUri(url); req.setContent(jsonMsg); DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time = dateFormat.format(new Date()); req.setReqTime(time); req.setEncryptKey(appkey); try { signature = TokenUtils.generateToken(req); } catch (Exception e) { e.printStackTrace(); } Map headers = new HashMap(); headers.put("appId", appId); headers.put("reqTime",time); headers.put("token",signature); String response = PlatformUtil.doPostJson(host+url,req.getContent(),headers); return JSONObject.parseObject(response); } /** * 取消订单 * @param host 访问路径 * @param appkey 秘钥 * @param appId 用户id * @param oid 订单id * @param passengerPhone 乘客手机号(用于判断该手机号下订单唯一) * @return */ public static JSONObject cancleOrder(String host,String appkey,String appId,String oid ,String passengerPhone){ Map map = new HashMap<>(); map.put("startLat", oid); map.put("startLng", passengerPhone); String jsonMsg =JSONObject.toJSONString(map); String signature = null; String url = "/api/platform/cancleOrder"; TokenUtils.RequestEntity req = new TokenUtils.RequestEntity(); req.setReqMethod(TokenUtils.REQ_METHOD_POST); req.setUri(url); req.setContent(jsonMsg); DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time = dateFormat.format(new Date()); req.setReqTime(time); req.setEncryptKey(appkey); try { signature = TokenUtils.generateToken(req); } catch (Exception e) { e.printStackTrace(); } Map headers = new HashMap(); headers.put("appId", appId); headers.put("reqTime",time); headers.put("token",signature); String response = PlatformUtil.doPostJson(host+url,req.getContent(),headers); return JSONObject.parseObject(response); } /** * 叫单 * @param host 访问路径 * @param appkey 秘钥 * @param appId 用户id * @param startLat 起点纬度 * @param startLng 起点经度 * @param startName 起点名称 * @param endLat 终点纬度 * @param endLng 终点经度 * @param endName 终点名称 * @param rideType 运力类型 * @param departureTime 出行时间 * @param oid 订单id * @param passengerName 乘客手机号 * @param passengerPhone 乘客名称 * @param userId 第三方平台用户Id * @param userPhone 用户电话(与乘客电话相同可以不填) * @param userName 用户姓名(与乘客姓名相同可以不填) * @return */ public static JSONObject sendOrder(String host,String appkey,String appId,String startLat ,String startLng,String startName,String endLat,String endLng,String endName,String rideType,String departureTime,String oid ,String passengerName,String passengerPhone,String userId,String userPhone,String userName){ Map map = new HashMap<>(); map.put("oid", oid); map.put("passengerPhone", passengerPhone); map.put("userId", userId); map.put("passengerName", passengerName); map.put("userName", userName); map.put("userPhone", userPhone); map.put("startLat", startLat); map.put("startLng", startLng); map.put("startName", startName); map.put("endLat", endLat); map.put("endLng", endLng); map.put("endName", endName); map.put("rideType", rideType); map.put("departureTime", departureTime); String jsonMsg =JSONObject.toJSONString(map); String signature = null; String url = "/api/platform/estimatesPrices"; TokenUtils.RequestEntity req = new TokenUtils.RequestEntity(); req.setReqMethod(TokenUtils.REQ_METHOD_POST); req.setUri(url); req.setContent(jsonMsg); DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time = dateFormat.format(new Date()); req.setReqTime(time); req.setEncryptKey(appkey); try { signature = TokenUtils.generateToken(req); } catch (Exception e) { e.printStackTrace(); } Map headers = new HashMap(); headers.put("appId", appId); headers.put("reqTime",time); headers.put("token",signature); String response = PlatformUtil.doPostJson(host+url,req.getContent(),headers); return JSONObject.parseObject(response); } }