欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

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

来源: javaer 分享于  点击 29504 次 点评:278

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


用于进行网络请求的工具类,可进行get,post两种请求,值得一提的是这个utils给大家提供了一个回调接口,方便获取下载文件的进度```java 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;      }  }

```

相关栏目:

用户点评