HttpUtils

来源:互联网 发布:数据透视表取消总计 编辑:程序博客网 时间:2024/06/05 06:53
package com.tmeos.xueliang.util;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;/** * @author  * @version V1.0 *  *          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;}}

原创粉丝点击