1:说下httpClient接口和4.2.6版本后过时实例DefaultHttpClient,以及新的实例应用。

   说到HTTP,脑子就冒出它的特性,基于TCP协议,简短点:说明是交互性的。

2:下面说平时开发中常用的Post请求:

      HttpClient httpclient = new DefaultHttpClient();
         HttpPost httppost = new HttpPost("请求地址");
         List<NameValuePair> formparams = new ArrayList<NameValuePair>();
         formparams.add(new BasicNameValuePair("data", jsondata));
         System.out.println("==== 提交参数 ======" +formparams);
         UrlEncodedFormEntity uefEntity;
         try {
             uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
             httppost.setEntity(uefEntity);
             HttpResponse response = httpclient.execute(httppost);
             HttpEntity entity = response.getEntity();
             if(entity!=null){
                 String results=EntityUtils.toString(entity, "UTF-8");
                 System.out.println("接口返回值="+results);
             }
         } catch (ClientProtocolException e) {
             e.printStackTrace();
         } catch (UnsupportedEncodingException e1) {
             e1.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         } finally {
             // 关闭连接,释放资源
             httpclient.getConnectionManager().shutdown();
         }

HttpClient httpclient = new DefaultHttpClient();
现目前这么写的很多,如果在引用版本4.2.6或者以下的话,这个是没有过时提示的,也没有问题。
但引用的版本已经高于4.2.6了,还用这个方法就会提示过时,这个我专门去apache的httpclient看了下,从4.3版本后DefaultHttpClient这个实例方法就被标注过时了,
都说程序员看不到错误是不会去动它的,警告神马的就不管了,工期要紧。

3:替换新的实例CloseableHttpClient和CloseableHttpResponse:

 

 //声明新的httpclient
         CloseableHttpClient httpClient = HttpClients.createDefault();
         HttpPost httpPost = new HttpPost("请求地址");
         //拼接参数
         List<NameValuePair> list = new ArrayList<NameValuePair>();
         list.add(new BasicNameValuePair("data", jsonData));
         System.out.println("==== 提交参数 ======" +list);
         CloseableHttpResponse response  = null;
         try {
             httpPost.setEntity(new UrlEncodedFormEntity(list));
             response = httpClient.execute(httpPost);
             System.out.println("========请求状态========"+response.getStatusLine());
             HttpEntity entity = response.getEntity();
             if(entity != null){
                 String result = EntityUtils.toString(entity, "UTF-8");
                 System.out.println("========接口返回=======" +result);
             }
             EntityUtils.consume(entity);
         } catch (Exception e) {
             e.printStackTrace();
         }finally {
             if(response != null){
                 try {
                     response.close();
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             }
         }

  可以看到几个新的类,CloseableHttpResponse响应调用后的参数接收,EntityUtils.consume(entity); 用之前的版本这个也是过时的,作用是关闭流功能。

  以前的方法httpclient.getConnectionManager().shutdown(); 顾名思义,调用端停止调用,和consume(关闭调用时返回流)这个功能是类似,但是到底有哪些不同,我还需要再研究研究。

文笔见拙,各位看官见谅。

http调用端HttpClient、DefaultHttpClient、CloseableHttpClient的更多相关文章

  1. HttpClient,DefaultHttpClient使用详解

    HttpClient:是一个接口 首先需要先创建一个DefaultHttpClient的实例 HttpClient httpClient=new DefaultHttpClient(); 发送GET请 ...

  2. net core天马行空系列:移植Feign,结合Polly,实现回退,熔断,重试,超时,做最好用的声明式http服务调用端

    系列目录 1.net core天马行空系列:原生DI+AOP实现spring boot注解式编程 2.net core天马行空系列: 泛型仓储和声明式事物实现最优雅的crud操作 3.net core ...

  3. WebForm 用户控件 委托 实现 textbox后台赋值 调用端处理实现 textchange

    新建一个简单的用户控件,如下图所示 textbox只读,button按钮模拟实现一堆业务逻辑后对textbox赋值. 用户控件后台代码也很简单 public partial class UTTCont ...

  4. Spring cloud Feign 调用端不生效

    如果提供方的接口经过测试是没问题的话. 消费方启动类加上@EnableFeignClients 注意定义的接口如果不和启动类在同一个包路径下,需要加basePackages 即:@EnableFeig ...

  5. 使用HttpClient调用WebAPI接口,含WebAPI端示例

    API端: using log4net; using System; using System.Collections.Generic; using System.IO; using System.L ...

  6. Java调用Http/Https接口(4)--HttpClient调用Http/Https接口

    HttpClient是Apache HttpComponents项目下的一个组件,是Commons-HttpClient的升级版,两者api调用写法也很类似.文中所使用到的软件版本:Java 1.8. ...

  7. 使用Httpclient 完美解决服务端跨域问题

    项目需求: jsonp是从前台js的角度考虑,通过Ajax调用springMVC的接口.同一个ip.同一个网络协议.同一个端口,三者都满足就是同一个域,否则就是跨域问题了.首页广告需要一个轮播的效果, ...

  8. HttpClient测试类请求端和服务端即可能出现乱码的解决

    junit HttpClient 请求端 代码: package com.taotao.httpclient; import java.util.ArrayList; import java.util ...

  9. HttpClient 远程接口调用方式

    远程接口调用方式HttpClient 问题:现在我们已经开发好了接口了,那该如何调用这个接口呢? 答:使用Httpclient客户端.   Httpclient简介 什么是httpclient Htt ...

随机推荐

  1. JDBC加载数据库驱动的方式

    JDBC作为数据库访问的规范接口,其中只是定义一些接口.具体的实现是由各个数据库厂商来完成. 一.重要的接口: 1.public interface Driver 每个驱动程序类必须实现的接口.Jav ...

  2. Elasticsearch重要配置

    虽然Elasticsearch需要很少的配置,但是有一些设置需要手动配置,并且必须在进入生产之前进行配置. path.data  and path.logs cluster.name node.nam ...

  3. Nginx+Keepalived 主备高可用 安装与配置

    环境说明:操作系统:CentOS6.7 x86_64Nginx版本:nginx-1.9.7Keepalived版本:keepalived-1.2.24 主nginx + Keepalived :10. ...

  4. mongodb入门笔记

    mongodb作为nosql中排名第一的数据库,近年来使用的人数越来越多,作为开发人员,非常有必要了解下mongodb数据库.下面就给大家介绍下mongodb数据库的基本知识,有不对的地方欢迎指正,Q ...

  5. 合并静态库出现 can't move temporary file错误

    静态库的制作就不说了很简单,网上也很多例子,这里主要讲下我合并通用静态库时候遇见的坑,在合并前注意.a文件一定要正确,我有一次scheme选了release但是device忘了换,结果怼着两个模拟器静 ...

  6. vue1与vue2的路由 以及vue2项目大概了解

    vue1的路由 1.设置根组件  Vue.extend() 2.设置局部组件  Vue.extend({template:"/home"}) 3.实例化路由   var route ...

  7. Python的迭代器与生成器

    Python中的生成器和迭代器方便好用,但是平时对生成器和迭代器的特性掌握的不是很到位,今天将这方面的知识整理一下. 迭代器 为了更好的理解迭代器和生成,我们需要简单的回顾一下迭代器协议的概念. 迭代 ...

  8. ASP.NET MVC Bundling and RequireJS

    关于ASP.NET MVC Bundling and RequireJS的取舍问题,最近比较困惑,我希望有一种方式可以结合两者的优点.作为.NET程序员,难道你没有过这方面的困惑吗? 因为我感觉各自都 ...

  9. Selenium chrome配置代理Python版

    环境: windows 7 + Python 3.5.2 + Selenium 3.4.2 + Chrome Driver 2.29 + Chrome 58.0.3029.110 (64-bit) S ...

  10. 11.巨坑,注意了,关于显示不正常的问题,localstorage的存储问题

    在存储时,localstorage和sessionstorage只能存储字符串,所以,必须把json转换为字符串再存,JSON.stringify