| | |
| | | package com.panzhihua.common.utlis; |
| | | |
| | | import java.io.*; |
| | | import java.net.MalformedURLException; |
| | | import java.net.URL; |
| | | import java.net.URLConnection; |
| | | import java.util.Iterator; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | import com.panzhihua.common.constants.HttpConstant; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.http.Header; |
| | | import org.apache.http.HttpEntity; |
| | | import org.apache.http.HttpResponse; |
| | |
| | | import org.apache.http.util.EntityUtils; |
| | | import org.springframework.util.ObjectUtils; |
| | | |
| | | import java.io.*; |
| | | import java.net.MalformedURLException; |
| | | import java.net.URL; |
| | | import java.net.URLConnection; |
| | | import java.util.Iterator; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import com.panzhihua.common.constants.HttpConstant; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | /** |
| | | * @program: springcloud_k8s_panzhihuazhihuishequ |
| | |
| | | public class HttpClientUtil { |
| | | /** |
| | | * 通过post方式调用http接口 |
| | | * @param url url路径 |
| | | * @param jsonParam json格式的参数 |
| | | * @param reSend 重发次数 |
| | | * @param headerKey header键值 |
| | | * @param headerValue headervalue |
| | | * |
| | | * @param url |
| | | * url路径 |
| | | * @param jsonParam |
| | | * json格式的参数 |
| | | * @param reSend |
| | | * 重发次数 |
| | | * @param headerKey |
| | | * header键值 |
| | | * @param headerValue |
| | | * headervalue |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public static String sendPostByJson(String url, String jsonParam,int reSend,String headerKey,String headerValue) { |
| | | //声明返回结果 |
| | | public static String sendPostByJson(String url, String jsonParam, int reSend, String headerKey, |
| | | String headerValue) { |
| | | // 声明返回结果 |
| | | String result = ""; |
| | | //开始请求API接口时间 |
| | | long startTime=System.currentTimeMillis(); |
| | | //请求API接口的响应时间 |
| | | long endTime= 0L; |
| | | // 开始请求API接口时间 |
| | | long startTime = System.currentTimeMillis(); |
| | | // 请求API接口的响应时间 |
| | | long endTime = 0L; |
| | | HttpEntity httpEntity = null; |
| | | HttpResponse httpResponse = null; |
| | | HttpClient httpClient = null; |
| | |
| | | httpClient = HttpClientFactory.getInstance().getHttpClient(); |
| | | // 设置请求头和报文 |
| | | HttpPost httpPost = HttpClientFactory.getInstance().httpPost(url); |
| | | Header header=new BasicHeader("Accept-Encoding",null); |
| | | Header header = new BasicHeader("Accept-Encoding", null); |
| | | httpPost.setHeader(header); |
| | | if (!ObjectUtils.isEmpty(headerKey)) { |
| | | httpPost.setHeader(headerKey,headerValue); |
| | | httpPost.setHeader(headerKey, headerValue); |
| | | } |
| | | // 设置报文和通讯格式 |
| | | StringEntity stringEntity = new StringEntity(jsonParam, HttpConstant.UTF8_ENCODE); |
| | | stringEntity.setContentEncoding(HttpConstant.UTF8_ENCODE); |
| | | stringEntity.setContentType(HttpConstant.APPLICATION_JSON); |
| | | httpPost.setEntity(stringEntity); |
| | | log.info("请求{}接口的参数为{}",url,jsonParam); |
| | | //执行发送,获取相应结果 |
| | | log.info("请求{}接口的参数为{}", url, jsonParam); |
| | | // 执行发送,获取相应结果 |
| | | httpResponse = httpClient.execute(httpPost); |
| | | httpEntity= httpResponse.getEntity(); |
| | | httpEntity = httpResponse.getEntity(); |
| | | result = EntityUtils.toString(httpEntity); |
| | | } catch (Exception e) { |
| | | log.error("请求{}接口出现异常",url,e); |
| | | log.error("请求{}接口出现异常", url, e); |
| | | if (reSend > 0) { |
| | | log.info("请求{}出现异常:{},进行重发。进行第{}次重发",url,e.getMessage(),(HttpConstant.REQ_TIMES-reSend +1)); |
| | | result = sendPostByJson(url, jsonParam, reSend - 1,headerKey,headerValue); |
| | | log.info("请求{}出现异常:{},进行重发。进行第{}次重发", url, e.getMessage(), (HttpConstant.REQ_TIMES - reSend + 1)); |
| | | result = sendPostByJson(url, jsonParam, reSend - 1, headerKey, headerValue); |
| | | if (result != null && !"".equals(result)) { |
| | | return result; |
| | | } |
| | | } |
| | | }finally { |
| | | } finally { |
| | | try { |
| | | EntityUtils.consume(httpEntity); |
| | | } catch (IOException e) { |
| | | log.error("http请求释放资源异常",e); |
| | | log.error("http请求释放资源异常", e); |
| | | } |
| | | } |
| | | //请求接口的响应时间 |
| | | endTime=System.currentTimeMillis(); |
| | | log.info("请求{}接口的响应报文内容为{},本次请求API接口的响应时间为:{}毫秒",url,result,(endTime-startTime)); |
| | | // 请求接口的响应时间 |
| | | endTime = System.currentTimeMillis(); |
| | | log.info("请求{}接口的响应报文内容为{},本次请求API接口的响应时间为:{}毫秒", url, result, (endTime - startTime)); |
| | | return result; |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 使用http请求调用接口,参数类型为xml |
| | | * @param urlStr 请求地址 |
| | | * @param data 请求参数 |
| | | * @return 调用结果 |
| | | * |
| | | * @param urlStr |
| | | * 请求地址 |
| | | * @param data |
| | | * 请求参数 |
| | | * @return 调用结果 |
| | | */ |
| | | public static String httpsRequest(String urlStr,String data) { |
| | | public static String httpsRequest(String urlStr, String data) { |
| | | try { |
| | | URL url = new URL(urlStr); |
| | | URLConnection con = url.openConnection(); |
| | | con.setDoOutput(true); |
| | | // con.setRequestProperty("Pragma:", "no-cache"); |
| | | // con.setRequestProperty("Pragma:", "no-cache"); |
| | | con.setRequestProperty("Cache-Control", "no-cache"); |
| | | con.setRequestProperty("Content-Type", "text/xml"); |
| | | |
| | | OutputStreamWriter out = new OutputStreamWriter(con |
| | | .getOutputStream()); |
| | | OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream()); |
| | | log.info("urlStr=" + urlStr); |
| | | log.info("xmlInfo=" + data); |
| | | out.write(new String(data.getBytes("UTF-8"))); |
| | | out.flush(); |
| | | out.close(); |
| | | BufferedReader br = new BufferedReader(new InputStreamReader(con |
| | | .getInputStream())); |
| | | BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream())); |
| | | String line = ""; |
| | | StringBuffer sb = new StringBuffer(); |
| | | for (line = br.readLine(); line != null; line = br.readLine()) { |
| | |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * http请求工具类,get请求 |
| | |
| | | key = iterator.next(); |
| | | Object val = params.get(key); |
| | | if (val instanceof List) { |
| | | List v = (List) val; |
| | | List v = (List)val; |
| | | for (Object o : v) { |
| | | stringBuilder.append(key).append("=").append(o.toString()).append("&"); |
| | | } |
| | |
| | | log.info(errorLog); |
| | | throw new Exception(url + errorLog); |
| | | } |
| | | //读取返回信息 |
| | | // 读取返回信息 |
| | | String charSet = "utf-8"; |
| | | if (resonseCharSet != null && resonseCharSet.length > 0) |
| | | charSet = resonseCharSet[0]; |
| | |
| | | /** |
| | | * http请求工具类,post请求 |
| | | * |
| | | * @param url url |
| | | * @param param 参数值 仅支持String |
| | | * @param url |
| | | * url |
| | | * @param param |
| | | * 参数值 仅支持String |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | |
| | | log.info(errorLog); |
| | | throw new Exception(url + errorLog); |
| | | } |
| | | //读取返回信息 |
| | | // 读取返回信息 |
| | | String output; |
| | | bufferedReader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent(), "utf-8")); |
| | | StringBuilder stringBuilder = new StringBuilder(); |
| | |
| | | |
| | | /** |
| | | * get请求 |
| | | * @param url 请求地址(get请求时参数自己组装到url上) |
| | | * @param headerMap 请求头 |
| | | * |
| | | * @param url |
| | | * 请求地址(get请求时参数自己组装到url上) |
| | | * @param headerMap |
| | | * 请求头 |
| | | * @return 响应文本 |
| | | */ |
| | | public static String get(String url, Map<String, String> headerMap,String param) { |
| | | public static String get(String url, Map<String, String> headerMap, String param) { |
| | | // 请求地址,以及参数设置 |
| | | HttpPost post = new HttpPost(url); |
| | | if (headerMap != null) { |
| | |
| | | InputStream in = null; |
| | | if (entity != null) { |
| | | try { |
| | | in = entity.getContent(); |
| | | in = entity.getContent(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |