HttpURLConnection和HttpClient的简单用法

HttpURLConnection的简单用法:先通过一个URL创建一个conn对象,然后就是可以设置get或者是post方法,接着用流来读取响应结果即可

    String html = null;
        long startTime = System.currentTimeMillis();
        try {
            URL url = new URL("http://www.baidu.com/");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");

            conn.setConnectTimeout(5 * 1000);
            if (conn.getResponseCode() == 200) {
                BufferedReader reader = new BufferedReader(new InputStreamReader(
                        conn.getInputStream()));
                String line;
                while ((line = reader.readLine()) != null) {

                    html += line;
                }
                /*
            //第二种方法
          InputStream is = conn.getInputStream(); byte []buffer = new byte[is.available()]; is.read(); String result = new String(buffer);*/ } } catch (ProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }

 

HttpClient的简单用法:

/**
     * @param url
     * @return 1.页面源码;2.TimeOut;3.没正确响应,返回null
     */
    public String doHttpGet(String url) {
        String result = null;
        //通过url来创建httpGet对象
        HttpGet httpGet = new HttpGet(url);
        httpClient = new DefaultHttpClient();
        // 请求超时
        httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, TIME_OUT);
        // 读取超时
        httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,TIME_OUT);
        try {
            httpResponse = httpClient.execute(httpGet);
            // 判断响应的状态码,200表示成功响应了请求
            if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                // 得到结果集
                result = EntityUtils.toString(httpResponse.getEntity(),"GB2312");
                // result = new String(result.getBytes(),"utf-8");
                //System.out.println(result);
            } else {
                System.err.println("未得到正确的响应,响应吗:"+ httpResponse.getStatusLine().getStatusCode());
            }
        } catch (ClientProtocolException e) {
        } catch (IOException e) {
            return "TimeOut";
        }
        return result;
    }

    /**
     * @param url
     * @param paramsList
     * @return 1.页面源码;2.TimeOut;3.没有响应,返回null
     */
    public String doHttpPost(String url, List<NameValuePair> paramsList) {
        String result = null;
        // 根据url创建HttpPost实例
        HttpPost httpPost = new HttpPost(url);
        httpClient = new DefaultHttpClient();
        // 请求超时
        httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, TIME_OUT);
        // 读取超时
        httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,TIME_OUT);
        try {
            // 设置HttpPost请求参数必须用NameValuePair对象
            httpPost.setEntity(new UrlEncodedFormEntity(paramsList, HTTP.UTF_8));
            // 发送post请求
            httpResponse = httpClient.execute(httpPost);
            // 判断响应的状态码,200表示成功响应了请求
            if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                result = EntityUtils.toString(httpResponse.getEntity());
                //System.out.println(result);
            } else {
                System.err.println("未得到正确的响应,响应吗:"+ httpResponse.getStatusLine().getStatusCode());
            }
        } catch (UnsupportedEncodingException e) {
            System.out.println("UnsupportedEncodingException");
        } catch (ParseException e) {
            System.out.println("ParseException");
        } catch (IOException e) {
            return "TimeOut";
        }
        return result;
    }

 

工具类NetManager

package com.kale.mycmcc.net;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

public class NetManager {
    public static int TIME_OUT = 4 * 1000;

    private HttpResponse httpResponse = null;
    private HttpClient httpClient;

    /**
     * @param url
     * @return 1.页面源码;2.TimeOut;3.没正确响应,返回null
     */
    public String doHttpGet(String url) {
        String result = null;
        //通过url来创建httpGet对象
        HttpGet httpGet = new HttpGet(url);
        httpClient = new DefaultHttpClient();
        // 请求超时
        httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, TIME_OUT);
        // 读取超时
        httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,TIME_OUT);
        try {
            httpResponse = httpClient.execute(httpGet);
            // 判断响应的状态码,200表示成功响应了请求
            if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                // 得到结果集
                result = EntityUtils.toString(httpResponse.getEntity(),"GB2312");
                // result = new String(result.getBytes(),"utf-8");
                //System.out.println(result);
            } else {
                System.err.println("未得到正确的响应,响应吗:"+ httpResponse.getStatusLine().getStatusCode());
            }
        } catch (ClientProtocolException e) {
        } catch (IOException e) {
            return "TimeOut";
        }
        return result;
    }

    /**
     * @param url
     * @param paramsList
     * @return 1.页面源码;2.TimeOut;3.没有响应,返回null
     */
    public String doHttpPost(String url, List<NameValuePair> paramsList) {
        String result = null;
        // 根据url创建HttpPost实例
        HttpPost httpPost = new HttpPost(url);
        httpClient = new DefaultHttpClient();
        // 请求超时
        httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, TIME_OUT);
        // 读取超时
        httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,TIME_OUT);
        try {
            // 设置HttpPost请求参数必须用NameValuePair对象
            httpPost.setEntity(new UrlEncodedFormEntity(paramsList, HTTP.UTF_8));
            // 发送post请求
            httpResponse = httpClient.execute(httpPost);
            // 判断响应的状态码,200表示成功响应了请求
            if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                result = EntityUtils.toString(httpResponse.getEntity());
                //System.out.println(result);
            } else {
                System.err.println("未得到正确的响应,响应吗:"+ httpResponse.getStatusLine().getStatusCode());
            }
        } catch (UnsupportedEncodingException e) {
            System.out.println("UnsupportedEncodingException");
        } catch (ParseException e) {
            System.out.println("ParseException");
        } catch (IOException e) {
            return "TimeOut";
        }
        return result;
    }

/*    *//**
     * 使用正则表达式过滤HTML标记
     *//*
    private String filterHtml(String source) {
        if (null == source) {
            return "";
        }
        return source.replaceAll("</?[^>]+>", "").trim();
    }

    private void showToast(Context mContext, String message, int flag) {
        Looper.prepare();
        Toast.makeText(mContext, message, flag).show();
        Looper.loop();
    }*/

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值