当前位置: 代码迷 >> Android >> 安卓工具类->Http请求的工具类
  详细解决方案

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

热度:77   发布时间:2016-04-28 02:23:41.0
安卓工具类------->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请求的工具类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;	}}

  相关解决方案