HttpClient4.5工具类

版本

 <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.2</version>
        </dependency>

工具类

public class HttpClientUtils {
    private static final Logger logger = LoggerFactory.getLogger(HttpClients.class);

    private static final int SUCCESS_CODE=200;
    /**
    * @decription get请求
    * @param url 接口地址
    * @return java.lang.String 返回json字符串
    * @author Dawn
    * @date 2019/8/6
    */
    public static String sendGet(String url) throws Exception {
        CloseableHttpClient httpClient=null;
        CloseableHttpResponse response = null;
        String result = "";
        try{
            //保持cookie
            CookieStore cookieStore = new BasicCookieStore();
            //创建 httpClient
            httpClient=HttpClients.custom().setDefaultCookieStore(cookieStore).build();

            HttpGet getMethod = new HttpGet(url);
            getMethod.setHeader("Content-Type","application/json;charset=UTF-8");
            response= httpClient.execute(getMethod);
            int statusCode = response.getStatusLine().getStatusCode();
            if(SUCCESS_CODE==statusCode){
                HttpEntity entity = response.getEntity();
                result = EntityUtils.toString(entity,"UTF-8");
            }else {
              logger.error("HttpClient get 请求失败,StatusCode:"+statusCode);
              throw new Exception("HttpClient get 请求失败,StatusCode:"+statusCode);
            }
        }catch (Exception ex){
             logger.error("HttpClient get 请求失败:"+ex.getMessage());
             throw ex;
        }finally {
            response.close();
        }

        return result;
    }

    /**
    * @decription post 请求
    * @param url 接口服务地址
    * @return java.lang.String
    * @author Dawn
    * @date 2019/8/6
    */
    public static  List<Cookie> getCookies(String url) throws Exception {

        CloseableHttpClient httpClient=null;
        CloseableHttpResponse response = null;
        List<Cookie>  cookies=null;
        try{
            CookieStore cookieStore = new BasicCookieStore();
            httpClient = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
            HttpPost postMethod = new HttpPost(url);
            postMethod.setHeader(new BasicHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"));
            response = httpClient.execute(postMethod);
            int statusCode = response.getStatusLine().getStatusCode();
            if(SUCCESS_CODE==statusCode){
                // 获取cookie
                cookies = cookieStore.getCookies();
            }else {
                logger.error("HttpClient 公众号登录失败");
                throw new Exception("HttpClient 公众号登录失败,StatusCode:"+statusCode);
            }
        }catch (Exception ex){
            logger.error("HttpClient 公众号登录失败"+ex);
            throw ex;
        }finally {
            response.close();
            httpClient.close();
        }
        return cookies;
    }

    public static String sendPost(String url,String loginUrl) throws Exception {
        // 获取cookie
        List<Cookie> cookies = getCookies(loginUrl);
        CloseableHttpClient httpClient =null;
        CloseableHttpResponse response = null;
        String result = "";
        try{
            if(cookies.size()<=0){
               throw new Exception("登录异常");
            }
            CookieStore cookieStore = new BasicCookieStore();
            Cookie cookieItem = cookies.get(0);
            BasicClientCookie cookie = new BasicClientCookie(cookieItem.getName(),cookieItem.getValue());
            cookie.setVersion(cookieItem.getVersion());
            cookie.setDomain(cookieItem.getDomain());
            cookieStore.addCookie(cookie);
            httpClient = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
            HttpPost postMethod = new HttpPost(url);
            postMethod.setHeader("Content-Type","application/json;charset=UTF-8");
            response = httpClient.execute(postMethod);
            int statusCode = response.getStatusLine().getStatusCode();
            if(SUCCESS_CODE==statusCode){
                HttpEntity entity = response.getEntity();
                result = EntityUtils.toString(entity,"UTF-8");
            }else {
                if(statusCode==302){
                    Header header= response.getLastHeader("location");
                    System.err.println(header.getValue());
                }
                logger.error("HttpClient pos 请求失败,StatusCode:"+statusCode);
                throw new Exception("HttpClient post 请求失败,StatusCode:"+statusCode);
            }
        }catch (Exception ex){
            logger.error("HttpClient post 请求失败"+ex);
            throw ex;
        }finally {
            response.close();
            httpClient.close();
        }
        return result;
    }
    /**
    * @decription 获取json字符某个属性值
    * @param data json字符串
    * @param key  json字符串的key属性
    * @return java.lang.String 返回值
    * @author Dawn
    * @date 2019/8/6
    */
    public static String getQueryValueByKey(String data,String key){
        if(StringUtils.isEmpty(data)){
            return null;
        }
        if(!data.contains(key)){
            return null;
        }
        JSONObject jsonObject = JSONObject.fromObject(data);
        return jsonObject.getString(key);
    }
}

InvokeResult

public class InvokeResult<T> implements Serializable {

    private static final long serialVersionUID = -4181103794622657034L;
    /**
     * 返回结果
     * */
    private T data;

    /**
     * 异常消息
     * */
    private String errorMessage;

    /**
     * 是否有异常
     * */
    private boolean hasErrors;

    /**
     * 是否成功
     * */
    private boolean success;

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public String getErrorMessage() {
        return errorMessage;
    }

    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }

    public boolean isHasErrors() {
        return hasErrors;
    }

    public void setHasErrors(boolean hasErrors) {
        this.hasErrors = hasErrors;
    }

    public boolean isSuccess() {
        return success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }

    public static InvokeResult success(){
       InvokeResult invokeResult = new InvokeResult();
       invokeResult.success=true;
       invokeResult.hasErrors= !invokeResult.success;
       return invokeResult;
    }

    public static <T> InvokeResult<T> success(T data){
        InvokeResult invokeResult = new InvokeResult();
        invokeResult.data = data;
        invokeResult.success = true;
        invokeResult.hasErrors=false;
        return invokeResult;
    }

    public static InvokeResult failure(String msg){
        InvokeResult invokeResult = new InvokeResult();
        invokeResult.hasErrors= true;
        invokeResult.success = false;
        invokeResult.errorMessage=msg;
        return invokeResult;
    }

    public static <T> InvokeResult<T> failure(T data){
        InvokeResult invokeResult = new InvokeResult();
        invokeResult.data = data;
        invokeResult.hasErrors = true;
        invokeResult.success = false;
        return invokeResult;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值