zoukankan      html  css  js  c++  java
  • 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();
        }*/
    
    }
  • 相关阅读:
    了解大数据的特点、来源与数据呈现方式
    结对项目-四则运算 “软件”之升级版
    个人项目-小学四则运算 “软件”之初版
    大数据应用期末作业
    分布式文件系统HDFS 练习
    安装Hadoop
    爬虫大作业
    爬取全部的校园新闻
    理解爬虫原理
    中文词频统计与词云生成
  • 原文地址:https://www.cnblogs.com/tianzhijiexian/p/3984926.html
Copyright © 2011-2022 走看看