web第二节

一.HTTP协议和HTTPS协议的区别

总结:HTTP协议默认采用80端口 HTTPS协议默认采用443 HTTPS相较于HTTP协议更安全一些,采用SSL+安全证书,但是效率低

二.编码手段模拟HTTP请求(HTTPClient)
模拟发送HTTP请求:
1.采用客户端
PostMan,RestClient
2.采用代码方式实现模拟HTTP请求(HttpClient)
2.1HTTPClient模拟Get请求
首先导入HttpClient依赖

<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>


测试编码:

//Get请求
                    public static void getRequest() throws IOException {
                        //创建一个默认的链接
                        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();
                    }

 

效果如下:

2.2HttpClient发送Post请求

public static void postRequest() throws IOException {
                    //创建链接
                    CloseableHttpClient client = HttpClients.createDefault();
                    //创建请求
                    HttpPost post=new HttpPost("http://localhost:8080/HttpClientServlet");
                    //创建参数队列
                    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();
                }

效果如下:

 

 

 

三.Postman:
一般在公司中测试接口,采用HttpClient或者PostMan,一般接口返回的数据大多数都是Json格式字符串

四.TPC长连接和短连接
长连接
客户端与服务器建立一次连接可以发送多次请求,持久连接
心跳检测
连接(3次握手)--->请求---->传输数据--->请求---->传输数据----xxxxxxx------关闭连接(4次挥手)
短链接
客户端与服务器创建一次连接只能发送一次请求
连接(3次握手)--->请求--->传输数据---->关闭连接(4次挥手)

长连接关闭:
1.心跳检测,如果在特定次数和时间内没有响应情况下,认为客户端挂掉,断开连接
2.客户端主动关闭
3.Tomcat配置连接超时时间,20分钟
应用场景:
长连接:一直保持连接,消息推送,默认网站采用的也是长连接 dubbo基于netty,长连接
短链接:在调用别人接口时,如果不是特别频繁的情况下,采用短链接

posted @ 2020-02-05 14:08  琴昕LNS~  阅读(148)  评论(0编辑  收藏  举报