HttpUtils 用于进行网络请求的工具类(未测试)

来源:互联网 发布:深圳知豆电动车租赁 编辑:程序博客网 时间:2024/05/21 04:17
用于进行网络请求的工具类,可进行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;          }      }  
0 0