一.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,长连接
短链接:在调用别人接口时,如果不是特别频繁的情况下,采用短链接