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;
        }
    }  
时间: 2024-11-03 22:47:16

HttpUtils 用于进行网络请求的工具类的相关文章

和异步网络相关的工具类HttpUtils

和异步网络相关的工具类 package com.flyou.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.HttpURLCon

安卓工具类------->Http请求的工具类

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请

发送http请求和https请求的工具类

package com.haiyisoft.cAssistant.utils; import java.io.IOException;import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.http.HttpEntity; import org.apache.ht

httputil用http获取请求的工具类

原文:httputil用http获取请求的工具类 源代码下载地址:http://www.zuidaima.com/share/1550463738612736.htm package com.zuidaima.xiaocan.demo.util; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Iterator; import java.util.

android网络相关的工具类

<uses-permission android:name="android.permission.INTERNET" /> <!-- 查询网络状态权限 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 粘过去就可以用了 package com.activity; import java.util.List; import

JDBC实现用于操作数据库Mysql的工具类JDBCTools

下面用一个统一的工具类封装一套用于数据库的JDBC操作:包括 1)获取数据库链接资源  2)释放数据库链接资源,包括Connection,Statement,PreparedStatement,ResultSet等 3)数据库的更新操作,包括插入,删除,修改  4)数据库的查询操作 首先是1)获取数据库链接资源 /** * 获取数据库链接的静态方法 这样子就保证了只加载一次文件的操作 * @return * @throws Exception */ public static Connectio

Python 学习之urllib模块---用于发送网络请求,获取数据

1.urllib urllib是Python标准库的一部分,包含urllib.request,urllib.error,urllib.parse,urlli.robotparser四个子模块. (1)urllib.request用法 1)urlopen函数:用于打开一个URL(urlopen返回一个类文件对象,可以像文件一样操作) 例如: import urllib.request web=urllib.request.urlopen('http://www.baidu.com') conten

Python 学习之urllib模块---用于发送网络请求,获取数据(2)

接着上一次的内容. 先说明一下关于split()方法:它通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串(把一个字符串分割成很多字符串组成的list列表) 语法:str.split(str="", num=string.count(str)). 参数:str 分隔符,默认为空格.num 分割次数 返回值:返回分割后的字符串列表 例如:你需要将一个英语句子中的每一个单词拿出来单独处理,就可以将其进行分割. 如:a=' I am a new stude

Python 学习之urllib模块---用于发送网络请求,获取数据(3)

上节内容,是得到了省/直辖市编码,如web='http://m.weather.com.cn/data5/city01',我们需要继续获取此接口的数据,于是进行下面的操作 for  i  in   b:                #i=b[0],b[1],b[2]...... code=i.split('|')[0] web='http://m.weather.com.cn/data5/city%s' web1=web %code content2=urllib.request.urlope