HttpUtils 用于进行网络请求的工具类

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
用于进行网络请求的工具类,可进行get,post两种请求,值得一提的是这个utils给大家提供了一个回调接口,方便获取下载文件的进度
    import java.io.BufferedReader;  
    import java.io.ByteArrayOutputStream;  
    import java.io.IOException;  
    import java.io.InputStream;  
    import java.io.InputStreamReader;  
    import java.io.PrintWriter;  
    import java.net.HttpURLConnection;  
    import java.net.URL;  
      
    //Http请求的工具类  
    public class HttpUtils  
    {  
      
        private static final int TIMEOUT_IN_MILLIONS = 5000;  
      
        public interface CallBack  
        {  
            void onRequestComplete(String result);  
        }  
      
      
        /** 
         * 异步的Get请求 
         *  
         * @param urlStr 
         * @param callBack 
         */  
        public static void doGetAsyn(final String urlStr, final CallBack callBack)  
        {  
            new Thread()  
            {  
                public void run()  
                {  
                    try  
                    {  
                        String result = doGet(urlStr);  
                        if (callBack != null)  
                        {  
                            callBack.onRequestComplete(result);  
                        }  
                    } catch (Exception e)  
                    {  
                        e.printStackTrace();  
                    }  
      
                };  
            }.start();  
        }  
      
        /** 
         * 异步的Post请求 
         * @param urlStr 
         * @param params 
         * @param callBack 
         * @throws Exception 
         */  
        public static void doPostAsyn(final String urlStr, final String params,  
                final CallBack callBack) throws Exception  
        {  
            new Thread()  
            {  
                public void run()  
                {  
                    try  
                    {  
                        String result = doPost(urlStr, params);  
                        if (callBack != null)  
                        {  
                            callBack.onRequestComplete(result);  
                        }  
                    } catch (Exception e)  
                    {  
                        e.printStackTrace();  
                    }  
      
                };  
            }.start();  
      
        }  
      
        /** 
         * Get请求,获得返回数据 
         *  
         * @param urlStr 
         * @return 
         * @throws Exception 
         */  
        public static String doGet(String urlStr)   
        {  
            URL url = null;  
            HttpURLConnection conn = null;  
            InputStream is = null;  
            ByteArrayOutputStream baos = null;  
            try  
            {  
                url = new URL(urlStr);  
                conn = (HttpURLConnection) url.openConnection();  
                conn.setReadTimeout(TIMEOUT_IN_MILLIONS);  
                conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);  
                conn.setRequestMethod("GET");  
                conn.setRequestProperty("accept", "*/*");  
                conn.setRequestProperty("connection", "Keep-Alive");  
                if (conn.getResponseCode() == 200)  
                {  
                    is = conn.getInputStream();  
                    baos = new ByteArrayOutputStream();  
                    int len = -1;  
                    byte[] buf = new byte[128];  
      
                    while ((len = is.read(buf)) != -1)  
                    {  
                        baos.write(buf, 0, len);  
                    }  
                    baos.flush();  
                    return baos.toString();  
                } else  
                {  
                    throw new RuntimeException(" responseCode is not 200 ... ");  
                }  
      
            } catch (Exception e)  
            {  
                e.printStackTrace();  
            } finally  
            {  
                try  
                {  
                    if (is != null)  
                        is.close();  
                } catch (IOException e)  
                {  
                }  
                try  
                {  
                    if (baos != null)  
                        baos.close();  
                } catch (IOException e)  
                {  
                }  
                conn.disconnect();  
            }  
              
            return null ;  
      
        }  
      
        /**  
         * 向指定 URL 发送POST方法的请求  
         *   
         * @param url  
         *            发送请求的 URL  
         * @param param  
         *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。  
         * @return 所代表远程资源的响应结果  
         * @throws Exception  
         */  
        public static String doPost(String url, String param)   
        {  
            PrintWriter out = null;  
            BufferedReader in = null;  
            String result = "";  
            try  
            {  
                URL realUrl = new URL(url);  
                // 打开和URL之间的连接  
                HttpURLConnection conn = (HttpURLConnection) realUrl  
                        .openConnection();  
                // 设置通用的请求属性  
                conn.setRequestProperty("accept", "*/*");  
                conn.setRequestProperty("connection", "Keep-Alive");  
                conn.setRequestMethod("POST");  
                conn.setRequestProperty("Content-Type",  
                        "application/x-www-form-urlencoded");  
                conn.setRequestProperty("charset", "utf-8");  
                conn.setUseCaches(false);  
                // 发送POST请求必须设置如下两行  
                conn.setDoOutput(true);  
                conn.setDoInput(true);  
                conn.setReadTimeout(TIMEOUT_IN_MILLIONS);  
                conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);  
      
                if (param != null && !param.trim().equals(""))  
                {  
                    // 获取URLConnection对象对应的输出流  
                    out = new PrintWriter(conn.getOutputStream());  
                    // 发送请求参数  
                    out.print(param);  
                    // flush输出流的缓冲  
                    out.flush();  
                }  
                // 定义BufferedReader输入流来读取URL的响应  
                in = new BufferedReader(  
                        new InputStreamReader(conn.getInputStream()));  
                String line;  
                while ((line = in.readLine()) != null)  
                {  
                    result += line;  
                }  
            } catch (Exception e)  
            {  
                e.printStackTrace();  
            }  
            // 使用finally块来关闭输出流、输入流  
            finally  
            {  
                try  
                {  
                    if (out != null)  
                    {  
                        out.close();  
                    }  
                    if (in != null)  
                    {  
                        in.close();  
                    }  
                } catch (IOException ex)  
                {  
                    ex.printStackTrace();  
                }  
            }  
            return result;  
        }  
    }  

标签: 网络

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:利用Netty中提供的HttpChunk简单实现文件传输

下一篇:Java二维码的解码和编码