• http请求工具类


    简单的http请求,短连接,请求完成之后就结束了,

    
    import org.apache.commons.codec.digest.DigestUtils;
    import org.apache.http.*;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.client.methods.HttpUriRequest;
    import org.apache.http.client.methods.RequestBuilder;
    import org.apache.http.entity.ContentType;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.entity.mime.FormBodyPart;
    import org.apache.http.entity.mime.MultipartEntity;
    import org.apache.http.entity.mime.content.StringBody;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.protocol.HTTP;
    import org.apache.http.util.EntityUtils;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.URI;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.nio.charset.Charset;
    import java.util.*;
    import java.util.Map.Entry;
    
    /**
     * @author rdd 2018.03.13
     */
    public class HttpUtils {
    
        public static final String charset = "utf-8";
    
        public static final int JS_TIME_OUT = 6000;
    
        /**
         * 不带参数的post请求,用的很少
         *
         * @param myURL
         * @return
         */
        public static String doPostUrl(String myURL) {
            URL url;
            try {
                url = new URL(myURL);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setConnectTimeout(JS_TIME_OUT);
                conn.setReadTimeout(JS_TIME_OUT);
                conn.setRequestMethod("POST");// 提交模式
                // 是否允许输入输出
                conn.setDoInput(true);
                conn.setDoOutput(true);
                // 设置请求头里面的数据,以下设置用于解决http请求code415的问题
                conn.setRequestProperty("Content-Type", "text/plain; charset=utf-8");
                // 链接地址
                conn.connect();
                OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
                // 发送参数
                // 清理当前编辑器的左右缓冲区,并使缓冲区数据写入基础流
                writer.flush();
                int code = conn.getResponseCode();
                BufferedReader reader = null;
                if (code == 200) {
    //                is = conn.getInputStream(); // 得到网络返回的输入流
                    reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
                } else {
    //                is = conn.getErrorStream(); // 得到网络返回的输入流
                    reader = new BufferedReader(new InputStreamReader(conn.getErrorStream(), "UTF-8"));
                }
    //            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
                String lines = reader.readLine();
                reader.close();
                return lines;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    
        private static String getSortURL(TreeMap<String, Object> mp, String head) {
            try {
                String url = "";
                Iterator<String> it = mp.keySet().iterator();
                StringBuffer sb = new StringBuffer();
                while (it.hasNext()) {
                    Object key = it.next();
                    url = url + key + "=" + URLEncoder.encode(mp.get(key).toString(), charset) + "&";
                    sb.append("|").append(mp.get(key));
                }
                return head + "?" + url;
            } catch (Exception e) {
                e.printStackTrace();
                return "";
            }
        }
    
        private static String postForm(String reqURL, TreeMap<String, Object> params) {
            CloseableHttpClient httpclient = HttpClients.custom().build();
            try {
                RequestBuilder builder = RequestBuilder.post(reqURL);
                builder.setCharset(Charset.forName(charset));
                MultipartEntity httpEntity = new MultipartEntity();
                if (params != null) {
                    for (Entry<String, Object> entry : params.entrySet()) {
                        FormBodyPart formBodyPart = new FormBodyPart(entry.getKey(),
                                new StringBody(String.valueOf(entry.getValue()), "text/plain", Charset.forName(charset)));
                        httpEntity.addPart(formBodyPart);
                    }
                }
                builder.setEntity(httpEntity);
                HttpUriRequest post = builder.build();
                CloseableHttpResponse response = httpclient.execute(post);
                try {
                    HttpEntity entity = response.getEntity();
                    Charset respCharset = ContentType.getOrDefault(entity).withCharset(charset).getCharset();
                    String result = EntityUtils.toString(entity, respCharset);
                    EntityUtils.consume(entity);
                    return result;
                } finally {
                    response.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    httpclient.close();
                } catch (IOException e) {
                }
            }
            return null;
        }
    
        private static String getMD5(String str) {
            try {
                return DigestUtils.md5Hex(str);
            } catch (Exception e) {
                throw new RuntimeException("MD5加密出现错误");
            }
        }
    
    
        /**
         * post请求(用于key-value格式的参数)
         *
         * @param url
         * @param params
         * @return
         */
        public static String doPost(String url, Map params) {
            BufferedReader in = null;
            try {
                // 定义HttpClient
                HttpClient client = new DefaultHttpClient();
                // 实例化HTTP方法
                HttpPost request = new HttpPost();
                request.setURI(new URI(url));
                //设置参数
                List<NameValuePair> nvps = new ArrayList<NameValuePair>();
                for (Iterator iter = params.keySet().iterator(); iter.hasNext(); ) {
                    String name = (String) iter.next();
                    String value = String.valueOf(params.get(name));
                    nvps.add(new BasicNameValuePair(name, value));
    
                    //System.out.println(name +"-"+value);
                }
                request.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
    
                HttpResponse response = client.execute(request);
                int code = response.getStatusLine().getStatusCode();
                if (code == 200) {    //请求成功
                    in = new BufferedReader(new InputStreamReader(response.getEntity()
                            .getContent(), "utf-8"));
                    StringBuffer sb = new StringBuffer("");
                    String line = "";
                    String NL = System.getProperty("line.separator");
                    while ((line = in.readLine()) != null) {
                        sb.append(line + NL);
                    }
    
                    in.close();
    
                    return sb.toString();
                } else {    //
                    System.out.println("状态码:" + code);
                    return null;
                }
            } catch (Exception e) {
                e.printStackTrace();
    
                return null;
            }
        }
    
        /**
         * post请求(用于请求json格式的参数)
         *
         * @param url
         * @param params
         * @return
         */
        public static String doPost(String url, String params) throws Exception {
            CloseableHttpClient httpclient = HttpClients.createDefault();
            HttpPost httpPost = new HttpPost(url);// 创建httpPost
            httpPost.setHeader("Accept", "application/json");
            httpPost.setHeader("Content-Type", "application/json");
            String charSet = "UTF-8";
            StringEntity entity = new StringEntity(params, charSet);
            httpPost.setEntity(entity);
            CloseableHttpResponse response = null;
            try {
                response = httpclient.execute(httpPost);
                StatusLine status = response.getStatusLine();
                int state = status.getStatusCode();
                if (state == HttpStatus.SC_OK) {
                    HttpEntity responseEntity = response.getEntity();
                    String jsonString = EntityUtils.toString(responseEntity);
                    return jsonString;
                } else {
    //                logger.error("请求返回:"+state+"("+url+")");
                }
            } finally {
                if (response != null) {
                    try {
                        response.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                try {
                    httpclient.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return null;
        }
    
    }
    

    有时候请求使用长连接的话更加省资源,长连接请求.长连接工具类

    世界上所有的不公平都是由于当事人能力不足造成的.
  • 相关阅读:
    如何理解联合文件系统?
    Docker 学习笔记(一)
    Bzoj 3124: [Sdoi2013]直径 题解
    Bzoj 3131 [Sdoi2013]淘金 题解
    欧拉路(题目)
    硬币问题
    线段树、树状数组
    Splay树、Treap树
    模拟退火
    广搜题目(一本通)
  • 原文地址:https://www.cnblogs.com/javayida/p/13347100.html
Copyright © 2020-2023  润新知