zoukankan      html  css  js  c++  java
  • HttpUtils 用于进行网络请求的工具类

    原文:http://www.open-open.com/code/view/1437537162631

    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;  
            }  
        }  
  • 相关阅读:
    CSS的浮动和清除
    外边距合并现象
    CSS 盒子模型
    CSS样式三
    CSS的继承与优先级
    CSS 样式二
    UVA 11922 Permutation Transformer(平衡二叉树)
    HDU 3726 Graph and Queries(平衡二叉树)(2010 Asia Tianjin Regional Contest)
    POJ 1873 The Fortified Forest(枚举+凸包)
    POJ 2069 Super Star(计算几何の最小球包含+模拟退火)
  • 原文地址:https://www.cnblogs.com/shihaiming/p/7047793.html
Copyright © 2011-2022 走看看