JAVA通用GET和POST方法

Posted 你猜猜我是谁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA通用GET和POST方法相关的知识,希望对你有一定的参考价值。

1.先设置请求和超时时间

    /**
     * 读超时设置30分钟
     */
    private static int READTIMEOUT = 1800000;

    /**
     * 链接超时设置30秒
     */
    private static int CONNECTTIMEOUT = 30000;

2.GET请求,ServiceResult封装过:

  /**
     * 通用get方法
     * @param addr
     * @param params
     * @return
     */
    public static ServiceResult<Boolean> sendGet(String addr, Map<String, String> params) {
        String res = "error";
        ServiceResult sr = new ServiceResult(false, res);
        CloseableHttpClient httpclient = HttpClients.createDefault();
        HttpGet httpGet = new HttpGet(addr);
        List<NameValuePair> values = Lists.newArrayList();
        for (Map.Entry<String, String> entry : params.entrySet()) {
            values.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
        }
        String str = "";
        UrlEncodedFormEntity uefEntity;
        try {
            str = EntityUtils.toString(new UrlEncodedFormEntity(values, Consts.UTF_8));
            LOG.warn("executing request " + addr + "?" + str);
            //设置请求和传输超时时间
            RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(READTIMEOUT).setConnectTimeout(
                    CONNECTTIMEOUT).build();
            httpGet.setConfig(requestConfig);
            CloseableHttpResponse response = httpclient.execute(httpGet);
            try {
                if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode()) {
                    sr.setData(true);
                    sr.setSucceed(true);
                } else {
                    sr.setSucceed(false);
                    sr.setData(false);
                }
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    res = EntityUtils.toString(entity, "UTF-8");
                    LOG.warn(res);
                }
            } finally {
                response.close();
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
            LOG.warn("", e);
        } catch (UnsupportedEncodingException e) {
            LOG.warn("", e);
        } catch (IOException e) {
            LOG.warn("", e);
        } finally {
            // 关闭连接,释放资源
            try {
                httpclient.close();
            } catch (IOException e) {
                LOG.warn("", e);
            }
        }
        return sr;
    }

3.POST请求:

  /**
     * 通用post方法
     * @param addr
     * @param params
     * @return
     */
    public static ServiceResult<Boolean> sendPost(String addr, Map<String, String> params) {
        String res = "error";
        ServiceResult sr = new ServiceResult(false, res);
        CloseableHttpClient httpclient = HttpClients.createDefault();
        HttpPost httppost = new HttpPost(addr);
        List formparams = new ArrayList();
        for (Map.Entry<String, String> entry : params.entrySet()) {
            formparams.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
        }
        UrlEncodedFormEntity uefEntity;
        try {
            uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
            httppost.setEntity(uefEntity);
            LOG.warn("executing request " + httppost.getURI());
            //设置请求和传输超时时间
            RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(READTIMEOUT).setConnectTimeout(
                    CONNECTTIMEOUT).build();
            httppost.setConfig(requestConfig);
            CloseableHttpResponse response = httpclient.execute(httppost);
            try {
                if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode()) {
                    sr.setData(true);
                    sr.setSucceed(true);
                } else {
                    sr.setSucceed(false);
                    sr.setData(false);
                }
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    res = EntityUtils.toString(entity, "UTF-8");
                    sr.setMsg(res);
                }
            } finally {
                response.close();
            }
        } catch (ClientProtocolException e) {
            LOG.error("", e);
        } catch (UnsupportedEncodingException e) {
            LOG.error("", e);
        } catch (IOException e) {
            LOG.error("", e);
        } finally {
            // 关闭连接,释放资源
            try {
                httpclient.close();
            } catch (IOException e) {
                LOG.error("", e);
            }
        }
        return sr;
    }

以上是关于JAVA通用GET和POST方法的主要内容,如果未能解决你的问题,请参考以下文章

jeecg-boot通用get和post 请求使用说明

javaweb解决post和get请求方式中文乱码问题(通用)

Ajax get和post区别

web请求除了get和post还都有哪些方式?

Java EE之Form的get与post方法

关于java代码提交HTTP POST请求中文乱码的解决方法