zoukankan      html  css  js  c++  java
  • HttpClient

    HttpClient

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

    以下列出的是 HttpClient 提供的主要的功能,要知道更多详细的功能可以参见 HttpClient 的主页。
    (1)实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
    (2)支持自动转向
    (3)支持 HTTPS 协议
    (4)支持代理服务器
     
    使用HttpClient 实现get请求:
      //创建一个默认的链接
            CloseableHttpClient client = HttpClients.createDefault();
            //创建一个请求
            HttpGet httpGet=new HttpGet("https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_date=2020-02-05&leftTicketDTO.from_station=BJP&leftTicketDTO.to_station=CQW&purpose_codes=ADULT");
            //执行请求获取响应的结果
            CloseableHttpResponse response = client.execute(httpGet);
            //获取响应的状态码
            System.out.println("服务器返回状态码:"+response.getStatusLine().getStatusCode());
            //服务器正常响应
            if(response.getStatusLine().getStatusCode()==200){
                //获取响应结果
                System.out.println(EntityUtils.toString(response.getEntity(),"UTF-8"));
            }
            //关闭结果对象
            response.close();
            //关闭链接
            client.close();
    

      

    使用HttpClient 实现post请求:

    做一个post请求的服务端:

    package com.wish;
    
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/HttpClientWeb")
    public class HttpClientWeb extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //获取数据
            String userName =req.getParameter("userName");
            System.out.println("接受的数据:"+userName);
            resp.setContentType("text/html;charset=utf-8");
            resp.getWriter().write("服务器正确接收到数据");
        }
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doPost(req,resp);
        }
    }
    

      

    使用post请求

       //创建链接
            CloseableHttpClient client = HttpClients.createDefault();
            //创建请求
            HttpPost post=new HttpPost("http://localhost:8080/HttpClientWeb");
            //创建参数队列
            List<NameValuePair> pairList=new ArrayList<>();
            pairList.add(new BasicNameValuePair("userName","张三"));
            //创建请求体,封装参数
            UrlEncodedFormEntity entity=new UrlEncodedFormEntity(pairList,"UTF-8");
            //将请求体交给当前请求
            post.setEntity(entity);
    
            //发送请求,接收结果
            CloseableHttpResponse response = client.execute(post);
            System.out.println("接收到的结果为:"+ EntityUtils.toString(response.getEntity(),"UTF-8"));
    
    
            //关闭资源
            response.close();
            client.close();
    

      

  • 相关阅读:
    实时信号阻塞队列大小测试
    实时信号和非实时信号
    [Linux]关于sigprocmask函数的讨论
    java中Map集合的常用方法 (转)
    佛跳墙
    百万数据查询效率提高方法(转)
    bootstrap table 前后端分页(超级简单)
    bootstrap table 分页序号递增问题 (转)
    Spring boot+mybatis+thymeleaf 实现登录注册,增删改查
    js弹出对话框的三种方式(转)
  • 原文地址:https://www.cnblogs.com/wishsaber/p/12263592.html
Copyright © 2011-2022 走看看