• Android-HttpUtil工具类


    Http(Java 版 HttpURLConnection)请求的相关工具类

    public class HttpUtil {
    
        private static final int TIMEOUT_IN_MILLIONS = 5000;
    
        public interface CallBack {
            void onRequestComplete(String requst);
        }
    
        /**
         * 异步的Get请求
         * @param urlStr
         * @param callBack
         */
        public static void doGetAsyn(final String urlStr, final CallBack callBack) {
            new Thread(new Runnable() {
    
                @Override
                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) {
            new Thread(new Runnable() {
                @Override
                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[1024];
                    while ((len = is.read()) != -1) {
                        baos.write(buf, 0, len);
                    }
                    baos.flush();
                    return baos.toString();
                } else {
                    throw new RuntimeException(" responseCode is not 200 ... ");
                }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (is != null)
                        is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                try {
                    if (baos != null)
                        baos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                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);
                HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
                // 设置通用的请求属性
                conn.setRequestProperty("accept", "*/*");
                conn.setRequestProperty("connection", "Keep-Alive");
                conn.setRequestMethod("POST");
                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;
        }
    
    }
  • 相关阅读:
    了解linux web的监听工具
    Ubuntu 16.04 安装docker-ce,docker-compose
    php 连接mysql 主机 localhost,显示 No such file or directory
    vagrant ssh try
    解决 WordPress“正在执行例行维护,请一分钟后回来”
    wordpress Warning: Parameter 2 to qtranxf_postsFilter() expected to be a reference
    ubuntu phpize 安裝
    ubuntu 16.04 pecl 不能安裝 mcrypt
    wp api jwt 403 (Forbidden) -- JWT is not configurated properly, please contact the admin
    docker gitlab backup
  • 原文地址:https://www.cnblogs.com/android-deli/p/10322145.html
Copyright © 2020-2023  润新知