| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
dddy
9年前发布

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

用于进行网络请求的工具类,可进行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;            }        }