zoukankan      html  css  js  c++  java
  • HttpClient配置及运用(一)

      HttpComponents是Apache 旗下的项目。其中有一个HttpClient,即HTTP客户端。

    之后我们建立项目,导入jar包,开始开发

      一、获取网页内容:

    package com.zhi.httpClient;
     
    import java.io.IOException;
     
    import org.apache.http.HttpEntity;
    import org.apache.http.ParseException;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
     
    public class Demo {
        public static void main(String[] args) {
            CloseableHttpClient closeableHttpClient=HttpClients.createDefault(); //1、创建实例
            //CloseableHttpClient意思是:可关闭的
            HttpGet httpGet=new HttpGet("http://www.huimsoft.com"); //2、创建实例
             
            //限制类型http://www.tuicool.com/
             
            CloseableHttpResponse closeableHttpResponse=null;
            try {
                closeableHttpResponse=closeableHttpClient.execute(httpGet); //3、执行
            } catch (ClientProtocolException e) { //客户端协议异常
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) { //IO异常
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            HttpEntity httpEntity=closeableHttpResponse.getEntity(); //4、获取实体
     
            String str="";
            try {
                str=EntityUtils.toString(httpEntity, "utf-8"); //获取网页内容,并且指定编码
            } catch (ParseException e) { //解析异常
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println(str);
             
            //关闭closeableHttpResponse
            try {
                closeableHttpResponse.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
             
            //关闭closeableHttpClient
            try {
                closeableHttpClient.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

      代码有很多,但是很多是在处理异常,所以我们也可以使用throws在方法上抛出,以简化代码格式,让其更好看。

      

    package com.zhi.httpClient;
     
    import org.apache.http.HttpEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
     
    public class Test {
        public static void main(String[] args) throws Exception {
            CloseableHttpClient closeableHttpClient=HttpClients.createDefault(); //1、创建实例
            HttpGet httpGet=new HttpGet("http://www.huimsoft.com"); //2、创建请求
             
            CloseableHttpResponse closeableHttpResponse=closeableHttpClient.execute(httpGet); //3、执行
            HttpEntity httpEntity=closeableHttpResponse.getEntity(); //4、获取实体
            System.out.println(EntityUtils.toString(httpEntity, "utf-8")); //5、获取网页内容,并且指定编码
             
            closeableHttpResponse.close();
            closeableHttpClient.close();
        }
    }

      二、设置请求头信息

     设置请求头信息的目的是为了模拟浏览器

      

    package com.zhi.httpClient2;
     
    import org.apache.http.HttpEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
     
    public class Demo {
     
        public static void main(String[] args) throws Exception {
            CloseableHttpClient closeableHttpClient=HttpClients.createDefault(); //1、创建实例
            HttpGet httpGet=new HttpGet("http://www.tuicool.com"); //2、创建请求
             
            httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0");
             
            CloseableHttpResponse closeableHttpResponse=closeableHttpClient.execute(httpGet); //3、执行
            HttpEntity httpEntity=closeableHttpResponse.getEntity(); //4、获取实体
            System.out.println(EntityUtils.toString(httpEntity, "utf-8")); //5、获取网页内容,并且指定编码
             
            closeableHttpResponse.close();
            closeableHttpClient.close();
        }
     
    }

    三、获取相应头信息Response Headers的内容类型Content-type

    package com.zhi.httpClient2;
     
    import org.apache.http.Header;
    import org.apache.http.HttpEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
     
    public class Demo {
        public static void main(String[] args) throws Exception {
            CloseableHttpClient closeableHttpClient=HttpClients.createDefault(); //1、创建实例
            HttpGet httpGet=new HttpGet("http://www.tuicool.com"); //2、创建请求
             
            httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0");
             
            CloseableHttpResponse closeableHttpResponse=closeableHttpClient.execute(httpGet); //3、执行
            HttpEntity httpEntity=closeableHttpResponse.getEntity(); //4、获取实体
             
            Header header=httpEntity.getContentType();
            System.out.println(header.toString()); //获取头信息内容
            System.out.println(header.getName().toString()); //这是获取key
            System.out.println(header.getValue().toString()); //这是获取value
             
            //System.out.println(EntityUtils.toString(httpEntity, "utf-8")); //5、获取网页内容,并且指定编码
            closeableHttpResponse.close();
            closeableHttpClient.close();
        }
    }

    运行输出:

    Content-Type: text/html; charset=utf-8
    Content-Type
    text/html; charset=utf-8

    我们的重点是获取的value的值,有些是text/html的,有些是其他的,比如我们请求一个js文件。

    https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js

     

    HttpGet httpGet=new HttpGet("http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js");
    public class Demo {
        public static void main(String[] args) throws Exception {
            CloseableHttpClient closeableHttpClient=HttpClients.createDefault(); //1、创建实例
            HttpGet httpGet=new HttpGet("http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"); //2、创建实例
             
            httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0");
             
            CloseableHttpResponse closeableHttpResponse=closeableHttpClient.execute(httpGet); //3、执行
            HttpEntity httpEntity=closeableHttpResponse.getEntity(); //4、获取实体
             
            Header header=httpEntity.getContentType();
            System.out.println(header.getValue().toString()); //这是获取value
             
            closeableHttpResponse.close();
            closeableHttpClient.close();
        }
    }

    运行结果:

    运行结果:application/javascript

    如果请求一个图片,同上

    运行结果:image/png

  • 相关阅读:
    一张图片入门Python
    4.1. 如何在Windows环境下开发Python
    你必须知道的EF知识和经验
    XUnit的使用
    如何使用NUnit
    Entity Framework 不支持DefaultValue
    Have You Ever Wondered About the Difference Between NOT NULL and DEFAULT?
    Validation failed for one or more entities. See 'EntityValidationErrors' property for more details
    Entity Framework 与多线程
    sqlite中的自增主键
  • 原文地址:https://www.cnblogs.com/FrankLiner/p/7718699.html
Copyright © 2011-2022 走看看