http抽象类实现post和get方法

mac2022-06-30  89

public class HttpBase {     private static final String CHARSET = "UTF-8";     private static final String returnType = "application/json";     private static CloseableHttpClient httpClient=null;     private static CloseableHttpResponse response=null;     private static CookieStore cookieStore = null;     private static final Logger LOG = LoggerFactory.getLogger(HttpBase.class);

    /**      *      * @param url  请求url      * @param json 请求参数 json类型      * @param methodType 方法模式      * @param contentType   实体正文类型      * @return 返回字符串      */     protected static String requestReString(String url, JsonObject json, String methodType, String contentType) {         String result = null;         LOG.info("请求url {}",url + ",开始");         try {             httpClient = HttpClients.createDefault();//使用CloseableHttpClient的工厂类HttpClients的方法来创建实例             if(methodType.equals("POST")){                 HttpPost httpPost = new HttpPost(url);                 if ("application/json".equals(contentType)) {                     try {                         System.err.println("json----------------------===========---------" + json.toString());                         StringEntity requestEntity = new StringEntity(json.toString(), CHARSET);                         httpPost.setEntity(requestEntity);                         httpPost.setHeader("Content-type",contentType);                         url = URLDecoder.decode(url, CHARSET);                         System.out.println("http post为:"+ httpPost);                         response = httpClient.execute(httpPost);                     } catch (Exception e) {                         // TODO: handle exception                     }                 }

                else if ("application/octet-stream".equals(contentType)) {                     try { //                        StringEntity requestEntity = new StringEntity(json.getString("data"), CHARSET);

                        HttpEntity requestEntity = (HttpEntity)json.get("entity");

                        httpPost.setEntity(requestEntity);                         httpPost.setHeader("Content-type",contentType);                         url = URLDecoder.decode(url, CHARSET); //                        System.out.println("http post为:"+ json.getString("data"));                         System.out.println("http post为:"+ httpPost);                         response = httpClient.execute(httpPost);                     } catch (Exception e) {                         e.printStackTrace();                     }

                }                 else {                     List<NameValuePair> params = new ArrayList<NameValuePair>();                     if (json != null) {                         System.out.println(json.toString());                         if (json.size() > 0) {                             for (String key : json.keySet()) {                                 if(json.get(key) == null) {                                     params.add(new BasicNameValuePair(key, ""));                                 }else{

                                    params.add(new BasicNameValuePair(key, "" + json.get(key)));                                 }                             }                         }

                    }                     StringEntity requestEntity = new UrlEncodedFormEntity(params, CHARSET);                     requestEntity.setContentType(contentType);                     requestEntity.setContentEncoding("UTF-8");                     httpPost.setEntity(requestEntity);                     url = URLDecoder.decode(url, CHARSET);                     System.out.println(params);                     response = httpClient.execute(httpPost);                 }             }             else if(methodType.equals("GET")){                 if (json != null) {                     url += getUrlParam(json);                 }                 HttpGet httpGet = new HttpGet(url);                 httpGet.addHeader("Accept", contentType);                 httpGet.addHeader("Accept-Charset", CHARSET);                 //add id58 by zhengxuesheng                 httpGet.addHeader(new BasicHeader("Cookie", "id58=c5/njVx+SUAtLtIkBTvTAg=="));                 response = httpClient.execute(httpGet);             }             HttpEntity responseEntity = response.getEntity();

            if (responseEntity != null) {                 result = EntityUtils.toString(responseEntity, CHARSET);             }         } catch (Exception e) {             LOG.error("httpclient调用异常: {}",e.getMessage());             e.printStackTrace();         } finally {             try {                 if (response!=null) {                     response.close();                 }                 if (httpClient!=null) {                     httpClient.close();                 }             } catch (IOException e) {                 e.printStackTrace();             }         }

        LOG.info("请求url {}",url + ",结束");         return result;     }

    /**      * 用于PMS项目      * @param url  请求url      * @param json 请求参数 json类型      * @param methodType 方法模式      * @param contentType   实体正文类型      * @return 返回字符串      */     @Deprecated     protected static String requestWithHeaderReString(String url, JSONObject headersjson, JsonObject json, String methodType, String contentType) {         String result = null;         LOG.info("请求url {}",url + ",开始");         try {             httpClient = HttpClients.createDefault();             if(methodType.equals("POST")){                 HttpPost httpPost = new HttpPost(url);                 //Post添加header                 if (headersjson != null) {                     if (headersjson.size() > 0) {                         for (String key : headersjson.keySet()) {                             if(headersjson.get(key) == null) {                                 httpPost.setHeader(key,"");                             }else{                                 httpPost.setHeader(key,headersjson.getString(key));                             }                         }                     }

                }                 if ("application/json".equals(contentType)) {                     try {                         System.err.println("jsonjson-----------------------===========---------" + json.toString());                         StringEntity requestEntity = new StringEntity(json.toString(), CHARSET);                         httpPost.setEntity(requestEntity);                         httpPost.setHeader("Content-type",contentType);                         url = URLDecoder.decode(url, CHARSET);                         System.out.println("http post为:"+ httpPost);                         response = httpClient.execute(httpPost);                     } catch (Exception e) {                         // TODO: handle exception                     }                 }else{                     List<NameValuePair> params = new ArrayList<NameValuePair>();                     if (json != null) {                         if (json.size() > 0) {                             for (String key : json.keySet()) {                                 if(json.get(key) == null) {                                     params.add(new BasicNameValuePair(key, ""));                                 }else{                                     System.out.println("post入参-key:"+key+"|value:"+json.get(key));                                     params.add(new BasicNameValuePair(key, "" + json.get(key)));                                 }                             }                         }                     }                     StringEntity requestEntity = new UrlEncodedFormEntity(params, CHARSET);                     requestEntity.setContentType(contentType);                     requestEntity.setContentEncoding("UTF-8");                     httpPost.setEntity(requestEntity);                     url = URLDecoder.decode(url, CHARSET);                     response = httpClient.execute(httpPost);                 }             }             else if(methodType.equals("GET")){                 if (json != null) {                     url += getUrlParam(json);                 }                 HttpGet httpGet = new HttpGet(url);                 httpGet.addHeader("Accept", contentType);                 httpGet.addHeader("Accept-Charset", CHARSET);                 //Get添加header                 if (headersjson != null) {                     if (headersjson.size() > 0) {                         for (String key : headersjson.keySet()) {                             if(headersjson.get(key) == null) {                                 httpGet.addHeader(key,"");                             }else{                                 httpGet.addHeader(key,headersjson.getString(key));                             }                         }                     }                 }                 response = httpClient.execute(httpGet);             }             HttpEntity responseEntity = response.getEntity();

            if (responseEntity != null) {                 result = EntityUtils.toString(responseEntity, CHARSET);             }         } catch (Exception e) {             LOG.error("httpclient调用异常: {}",e.getMessage());             e.printStackTrace();         } finally {             try {                 if (response!=null) {                     response.close();                 }                 if (httpClient!=null) {                     httpClient.close();                 }             } catch (IOException e) {                 e.printStackTrace();             }         }

        LOG.info("请求url {}",url + ",结束");         return result;     }

    /**      * 从redis中获取ppu值      * @param url      * @param json      * @param methodType      * @param contentType      * @return      */     protected static String requestWithredisCookie(String url, JsonObject json, String methodType, String contentType){         return requestWithCookieReString(url, RedisUtil.get("PPU_value"), json, methodType, contentType);     }

    /**      * 用于商家后台项目      * @param url  请求url      * @param json 请求参数 json类型      * @param methodType 方法模式      * @param contentType   实体正文类型      * @return 返回字符串      */     protected static String requestWithCookieReString(String url, String ppu_value, JsonObject json, String methodType, String contentType) {         String result = null;         String domain = ".58.com";         String path = "/";         try { //          保存PPU进入cookie,并设置domain和path             cookieStore = new BasicCookieStore();             BasicClientCookie cookie = new BasicClientCookie("PPU",ppu_value);             cookie.setSecure(false);             cookie.setDomain(domain);             cookie.setPath(path);             cookieStore.addCookie(cookie);             if(domain != null) cookie.setAttribute("domain", domain);             if(path != null) cookie.setAttribute("path", path);

//          new一个带cookie的httplient             httpClient = HttpClients.custom()                     .setDefaultCookieStore(cookieStore)                     .build();             if(methodType.equals("POST")){                 HttpPost httpPost = new HttpPost(url); //                httpPost.setHeader("Content-type",contentType);                 httpPost.setHeader("uid",RedisUtil.get("uid_value"));                 httpPost.setHeader("referer","https://houserent.m.58.com");                 if ("application/json".equals(contentType)) {                     try {                         System.err.println("json-----------------------===========---------" + json.toString());                         StringEntity requestEntity = new StringEntity(json.toString(), CHARSET);                         httpPost.setEntity(requestEntity);                         httpPost.setHeader("Content-type",contentType); //                        httpPost.setHeader("uid",RedisUtil.get("uid_value"));                         url = URLDecoder.decode(url, CHARSET);                         System.out.println("http post为:"+ httpPost);                         response = httpClient.execute(httpPost);                     } catch (Exception e) {                         // TODO: handle exception                     }                 }else if("text/plain".equals(contentType)){                     MultipartEntityBuilder builder = MultipartEntityBuilder.create();                     if (json != null) {                         if (json.size() > 0) {                             for (String key : json.keySet()) {                                 if(json.get(key) == null) {                                     builder.addTextBody(key, "");                                 }else if("file".equals(key)){                                     builder.addBinaryBody(key,(File)json.get(key));                                 }else{                                     builder.addTextBody(key, "" + json.get(key));                                 }                             }                         }                     }                     httpPost.setEntity(builder.build());                     response = httpClient.execute(httpPost);                 }else{                     List<NameValuePair> params = new ArrayList<NameValuePair>();                     if (json != null) {                         if (json.size() > 0) {                             for (String key : json.keySet()) {                                 if(json.get(key) == null) {                                     params.add(new BasicNameValuePair(key, ""));                                 }else{                                     params.add(new BasicNameValuePair(key, "" + json.get(key)));                                 }                             }                         }

                    }                     StringEntity requestEntity = new UrlEncodedFormEntity(params, CHARSET);                     requestEntity.setContentType(contentType);                     requestEntity.setContentEncoding("UTF-8");                     httpPost.setEntity(requestEntity);                     url = URLDecoder.decode(url, CHARSET);                     response = httpClient.execute(httpPost);                 }             }             else if(methodType.equals("GET")){                 if (json != null) {                     url += getUrlParam(json);                 }                 HttpGet httpGet = new HttpGet(url);                 httpGet.addHeader("Accept", contentType);                 httpGet.addHeader("Accept-Charset", CHARSET);                 httpGet.addHeader("ID58","1234456778");                 response = httpClient.execute(httpGet);             }             //拿res返回的cookie             List<Cookie> cookies = cookieStore.getCookies();             for (int i = 0; i < cookies.size(); i++) {                 cookieStore.addCookie(cookies.get(i));                 System.out.println("Local cookie: " + cookies.get(i));             }

            HttpEntity responseEntity = response.getEntity();

            if (responseEntity != null) {                 result = EntityUtils.toString(responseEntity, CHARSET);             }         } catch (Exception e) {             LOG.error("httpclient调用异常: {}",e.getMessage());             e.printStackTrace();         } finally {             try {                 if (response!=null) {                     response.close();                 }                 if (httpClient!=null) {                     httpClient.close();                 }             } catch (IOException e) {                 e.printStackTrace();             }         }

        LOG.info("请求url {}",url + ",结束");         return result;     }

    /**      * 把header里的参数透传      * @param url  请求url      * @param json 请求参数 json类型      * @param methodType 方法模式      * @param contentType   实体正文类型      * @return 返回字符串      */     protected static String requestWithCookieMapReString(String url, HashMap<String,String> cookieMap, JsonObject json, String methodType, String contentType) {         String result = null;         String domain = cookieMap.get("domain");         String path = cookieMap.get("path");         try { //          保存PPU进入cookie,并设置domain和path             cookieStore = new BasicCookieStore();             BasicClientCookie cookie = null;             if(domain.startsWith("anjuke")){                 cookie = new BasicClientCookie("ajkAuthTicket",cookieMap.get("ajkAuthTicket"));             }else{                 cookie = new BasicClientCookie("PPU",cookieMap.get("PPU"));             }             cookie.setSecure(false);             cookie.setDomain(domain);             cookie.setPath(path);             cookieStore.addCookie(cookie);             if(domain != null) cookie.setAttribute("domain", domain);             if(path != null) cookie.setAttribute("path", path);

//          new一个带cookie的httplient             httpClient = HttpClients.custom()                     .setDefaultCookieStore(cookieStore)                     .build();             if(methodType.equals("POST")){                 HttpPost httpPost = new HttpPost(url);                 httpPost.setHeader("uid",RedisUtil.get("uid_value"));                 httpPost.setHeader("referer","https://houserent.m.58.com");                 if ("application/json".equals(contentType)) {                     try {                         System.err.println("json-----------------------===========---------" + json.toString());                         StringEntity requestEntity = new StringEntity(json.toString(), CHARSET);                         httpPost.setEntity(requestEntity);                         httpPost.setHeader("Content-type",contentType); //                        httpPost.setHeader("PPU",ppu_value);                         url = URLDecoder.decode(url, CHARSET);                         System.out.println("http post为:"+ httpPost);                         response = httpClient.execute(httpPost);                     } catch (Exception e) {                         // TODO: handle exception                     }                 }else if("text/plain".equals(contentType)){                     MultipartEntityBuilder builder = MultipartEntityBuilder.create();                     if (json != null) {                         if (json.size() > 0) {                             for (String key : json.keySet()) {                                 if(json.get(key) == null) {                                     builder.addTextBody(key, "");                                 }else if("file".equals(key)){                                     builder.addBinaryBody(key,(File)json.get(key));                                 }else{                                     builder.addTextBody(key, "" + json.get(key));                                 }                             }                         }                     }                     httpPost.setEntity(builder.build());                     response = httpClient.execute(httpPost);                 }else {                     List<NameValuePair> params = new ArrayList<NameValuePair>();                     if (json != null) {                         if (json.size() > 0) {                             for (String key : json.keySet()) {                                 if(json.get(key) == null) {                                     params.add(new BasicNameValuePair(key, ""));                                 }else{

                                    params.add(new BasicNameValuePair(key, "" + json.get(key)));                                 }                             }                         }

                    }                     StringEntity requestEntity = new UrlEncodedFormEntity(params, CHARSET);                     requestEntity.setContentType(contentType);                     requestEntity.setContentEncoding("UTF-8");                     httpPost.setEntity(requestEntity);                     url = URLDecoder.decode(url, CHARSET);                     response = httpClient.execute(httpPost);                 }             }             else if(methodType.equals("GET")){                 if (json != null) {                     url += getUrlParam(json);                 }                 HttpGet httpGet = new HttpGet(url);                 httpGet.addHeader("Accept", contentType);                 httpGet.addHeader("Accept-Charset", CHARSET);                 response = httpClient.execute(httpGet);             }             //拿res返回的cookie             List<Cookie> cookies = cookieStore.getCookies();             for (int i = 0; i < cookies.size(); i++) {                 cookieStore.addCookie(cookies.get(i));                 System.out.println("Local cookie: " + cookies.get(i));             }

            HttpEntity responseEntity = response.getEntity();

            if (responseEntity != null) {                 result = EntityUtils.toString(responseEntity, CHARSET);             }         } catch (Exception e) {             LOG.error("httpclient调用异常: {}",e.getMessage());             e.printStackTrace();         } finally {             try {                 if (response!=null) {                     response.close();                 }                 if (httpClient!=null) {                     httpClient.close();                 }             } catch (IOException e) {                 e.printStackTrace();             }         }

        LOG.info("请求url {}",url + ",结束");         return result;     }

    /**      * 把header和cookie里的参数全都透传过去      * @param url  请求url      * @param json 请求参数 json类型      * @param methodType 方法模式      * @param contentType   实体正文类型      * @return 返回字符串      */     protected static String requestWithCookieMapAndHeaderMap(String url, HashMap<String,String> cookieMap, HashMap<String,String> userCookieMap, HashMap<String,String> headerMap, JsonObject json, String methodType, String contentType) {         String result = null;         String domain = cookieMap.get("domain");         String path = cookieMap.get("path");         try { //          保存PPU进入cookie,并设置domain和path             cookieStore = new BasicCookieStore();             BasicClientCookie cookie = null;             if(domain.startsWith("anjuke")){                 cookie = new BasicClientCookie("ajkAuthTicket",cookieMap.get("ajkAuthTicket"));             }else{                 cookie = new BasicClientCookie("PPU",cookieMap.get("PPU"));             }             cookie.setSecure(false);             cookie.setDomain(domain);             cookie.setPath(path);             cookieStore.addCookie(cookie);             if(domain != null) cookie.setAttribute("domain", domain);             if(path != null) cookie.setAttribute("path", path);             //遍历userHashMap             if(userCookieMap!=null) {                 for(String key:userCookieMap.keySet()){                     cookieStore.addCookie(new BasicClientCookie(key,userCookieMap.get(key)));                 }             }             // 获取cookie             List<Cookie> cookies = cookieStore.getCookies();             for (Cookie c : cookies) {                 System.out.println("Local Cookie:" + c);             } //          new一个带cookie的httplient             httpClient = HttpClients.custom()                     .setDefaultCookieStore(cookieStore)                     .build();             if(methodType.equals("POST")){                 HttpPost httpPost = new HttpPost(url);                 httpPost.setHeader("uid",RedisUtil.get("uid_value"));                 //遍历headerMap                 if(headerMap!=null){                     for(String key:headerMap.keySet()){                         httpPost.setHeader(key,headerMap.get(key));                     }                 }                 if ("application/json".equals(contentType)) {                     try {                         System.err.println("json-----------------------===========---------" + json.toString());                         StringEntity requestEntity = new StringEntity(json.toString(), CHARSET);                         httpPost.setEntity(requestEntity);                         httpPost.setHeader("Content-type",contentType); //                        httpPost.setHeader("PPU",ppu_value);                         url = URLDecoder.decode(url, CHARSET);                         System.out.println("http post为:"+ httpPost);                         response = httpClient.execute(httpPost);                     } catch (Exception e) {                         // TODO: handle exception                     }                 }else if("text/plain".equals(contentType)){                     MultipartEntityBuilder builder = MultipartEntityBuilder.create();                     if (json != null) {                         if (json.size() > 0) {                             for (String key : json.keySet()) {                                 if(json.get(key) == null) {                                     builder.addTextBody(key, "");                                 }else if("file".equals(key)){                                     builder.addBinaryBody(key,(File)json.get(key));                                 }else{                                     builder.addTextBody(key, "" + json.get(key));                                 }                             }                         }                     }                     httpPost.setEntity(builder.build());                     response = httpClient.execute(httpPost);                 }else {                     List<NameValuePair> params = new ArrayList<NameValuePair>();                     if (json != null) {                         if (json.size() > 0) {                             for (String key : json.keySet()) {                                 if(json.get(key) == null) {                                     params.add(new BasicNameValuePair(key, ""));                                 }else{

                                    params.add(new BasicNameValuePair(key, "" + json.get(key)));                                 }                             }                         }

                    }                     StringEntity requestEntity = new UrlEncodedFormEntity(params, CHARSET);                     requestEntity.setContentType(contentType);                     requestEntity.setContentEncoding("UTF-8");                     httpPost.setEntity(requestEntity);                     url = URLDecoder.decode(url, CHARSET);                     response = httpClient.execute(httpPost);                 }             }             else if(methodType.equals("GET")){                 if (json != null) {                     url += getUrlParam(json);                 }                 HttpGet httpGet = new HttpGet(url);                 httpGet.addHeader("Accept", contentType);                 httpGet.addHeader("Accept-Charset", CHARSET);                 //遍历headerMap                 if(headerMap!=null){                     for(String key:headerMap.keySet()){                         httpGet.addHeader(key,headerMap.get(key));                     }                 }                 response = httpClient.execute(httpGet);             }             //拿res返回的cookie //            List<Cookie> cookies = cookieStore.getCookies(); //            for (int i = 0; i < cookies.size(); i++) { //                cookieStore.addCookie(cookies.get(i)); //                System.out.println("Local cookie: " + cookies.get(i)); //            }

            HttpEntity responseEntity = response.getEntity();

            if (responseEntity != null) {                 result = EntityUtils.toString(responseEntity, CHARSET);             }         } catch (Exception e) {             LOG.error("httpclient调用异常: {}",e.getMessage());             e.printStackTrace();         } finally {             try {                 if (response!=null) {                     response.close();                 }                 if (httpClient!=null) {                     httpClient.close();                 }             } catch (IOException e) {                 e.printStackTrace();             }         }

        LOG.info("请求url {}",url + ",结束");         return result;     }

    /**      * get参数组装      * @param      * @return      */     private static String getUrlParam(JsonObject json){         StringBuffer url = new StringBuffer();         if (!json.isEmpty() && json.size()>0) {             url.append("?");             for (String key : json.keySet()) {                 try {                     url.append(key + "=" + URLEncoder.encode(json.get(key).toString(), CHARSET) + "&");                 } catch (Exception e) {                     e.printStackTrace();                 }             }             url.deleteCharAt(url.length()-1);         }         LOG.info("get请求的参数 {}", url.toString());         return url.toString();     } }

最新回复(0)