Apache HttpClient的用法

Apache HttpClient 简介

  HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

Apache HttpClient 使用步骤

01 添加Jar包
  1. 未使用Meaven的在项目中添加以下jar包

httpclient 4.5.5luent-hc 4.5.5httpmime 4.5.5

  1. 使用了Meaven的项目在pom.xml中添加如下依赖


    org.apache.httpcomponents
    httpclient
    4.5.5


    org.apache.httpcomponents
    fluent-hc
    4.5.5


    org.apache.httpcomponents
    httpmime
    4.5.5


02 HttpClient 使用流程

使用 HttpClient 发送请求、接收响应很简单,一般需要如下几步即可。

  • 创建 HttpClient对象。
  • 创建请求方法的实例,并指定请求 URL。如果需要发送 GET 请求,创建 HttpGet对象;如果需要发送 POST 请求,创建 HttpPost对象。
  • 如果需要发送请求参数,可调用 HttpGetHttpPost共同的 setParams(HttpParams params)方法来添加请求参数;对于 HttpPost对象而言,也可调用 setEntity(HttpEntity entity)方法来设置请求参数。
  • 调用HttpClient对象的 execute(HttpUriRequest request)发送请求,该方法返回一个 HttpResponse
  • 调用 HttpResponsegetAllHeaders()getHeaders(String name)等方法可获取服务器的响应头;调用 HttpResponsegetEntity()方法可获取 HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。
  • 释放连接。close()方法无论执行方法是否成功,都必须释放连接。
03 HttpClient Get请求示例
//方法如下:
 private static void get(){
        //创建HTTPClient 客户端,打开浏览器
        CloseableHttpClient httpClient= HttpClients.createDefault();

        //创建GET请求,输入URL
        String url="" //输入想请求的网站地址(如果有参数记得带参数)
        HttpGet httpGet =new HttpGet(url);
        String cookie="" //请求cookie,如果遇到需要登陆的,在登陆之后获得相应的cookie之后方可请求。获取方法在浏览器的控制台->Network->All->请求的地址里面获取。
        httpGet.setHeader("Cookie","");
       // 请求头信息,跟cookie一样的地方获取
       httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400");
        //保持长连接
        httpGet.setHeader("Connection", "keep-alive");
        //发送请求,回车
        try{
        // httpClient.execute()方法为提交请求(即向我们上网输入www.baidu.comd之后的回车操作!),然后得到一个CloseableHttpResponse对象,用httpResponse存着
        CloseableHttpResponse httpResponse=httpClient.execute(httpGet);
        //HttpEntity为服务器的响应内容对象,httpResponse.getEntity()可获得请求回来的响应内容。
        HttpEntity httpEntity=httpResponse.getEntity();
         // 可将获得的内容打印出来到控制台看
          System.out.println(EntityUtils.toString(httpEntity));
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            try {
                if(httpClient !=null)
                    httpClient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
04 HttpClient POST请求示例

POST请求跟Get请求差不多,就是参数的处理有点不一样,Get是带在url里面。而POST需要封装起来

  private static void post(){
            //创建HTTPClient 客户端,打开浏览器
            CloseableHttpClient httpClient= HttpClients.createDefault();

            //创建POST请求,输入URL
            String url=""; //Post请求的url,不能带参,只能写地址
            HttpPost httpPost =new HttpPost(url);
            httpPost.setHeader("Cookie", "");
            httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400");
            httpPost.setHeader("Connection", "keep-alive");

            //创建请求参数
            List params=new ArrayList();
            params.add(new BasicNameValuePair("draw", "1"));
            params.add(new BasicNameValuePair("start", "0"));
            params.add(new BasicNameValuePair("length", "10"));
            try {
             httpPost.setEntity(new UrlEncodedFormEntity(params,"UTF-8"));
             CloseableHttpResponse httpResponse=httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                System.out.println(EntityUtils.toString(httpEntity));
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

你可能感兴趣的:(JavaWeb篇)