• 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

  • 相关阅读:
    ADF_Data Binding系列2_使用URL Service Data Control
    PLSQL 逻辑多线程
    PLSQL 逻辑多线程机制
    ADF_Data Binding系列1_使用Bean Data Control
    ADF_Controller系列5_通过绑定TasksFlow创建Train
    ADF_Controller系列4_通过创建ADF Menu作为页面向导(Part2)
    ADF_Controller系列3_通过创建ADF Menu作为页面向导(Part1)
    ADF_Controller系列2_绑定TasksFlow、Region和Routers(Part2)
    ADF_Controller系列1_绑定TasksFlow、Region和Routers(Part1)
    ADF_Starting系列9_使用EJB/JPA/JSF通过ADF构建Web应用程序之测试J2EE Container
  • 原文地址:https://www.cnblogs.com/FrankLiner/p/7718699.html
Copyright © 2020-2023  润新知