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. GPUImage的filter 响应处理链 的理解笔记

    GPUImage的filter的textures处理链式结构 两个最重要的的地方: 最重要的一个类GPUImageOutput(所有的filter的父类,其他也有继承它的,如GPUImageUIEle ...

  2. (转) Unicode(UTF-8, UTF-16)令人混淆的概念

    原文地址:http://www.cnblogs.com/kingcat/archive/2012/10/16/2726334.html 为啥需要Unicode 我们知道计算机其实挺笨的,它只认识010 ...

  3. MySql数据库基础操作——数据库、用户的创建,表的制作、修改等

    MySql 是一款使用便捷.轻量级的数据库.因为他体积小.速度快.安装使用简单.开源等优点,目前是使用最广泛的数据库.目前位于Oracle甲骨文公司旗下.那今天我们就来介绍一下数据库的基本操作.具体介 ...

  4. 前端的3D(css3版本)

    其实是依托Css3的功劳,先上一个例子 代码地址:链接: https://pan.baidu.com/s/1sldhljJ 密码: i6qh 这动画纵有万般变化,也离不开以下几个属性 transfor ...

  5. 从OneNote走出,技术博客养成记

    2010年9月北上求学,在一所普通本科院校学习计算机专业,年少轻狂未能领悟计算机技术的本质渐生弃学之意. 2013年9月南下参军,在一个电抗部队从事通信指控专业,填补了扛枪演练的男儿情怀却又无法抵制对 ...

  6. DataTable数据导出Excel 并且下载

    public string Excel(System.Data.DataTable dt) { //模板的路径 string strUploadPath = HttpContext.Current.S ...

  7. html <input type="text" />加上readonly后在各种浏览器的差异。

    <html> <body> <p>Name:<input type="text" name="email" /> ...

  8. Sql Server日期时间格式转换

    Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSelect CONVERT(varchar(100), GETDATE() ...

  9. 《HelloGitHub》第 15 期

    公告 这段时间没怎么写文章,跑去写 https://hellogithub.com 这个网站了,现在已经顺利上线,功能后面会持续迭代. 最后,这个 https://hellogithub.com 网站 ...

  10. [leetcode-312-Burst Balloons]

    Given n balloons, indexed from 0 to n-1. Each balloon is painted with a number on it represented by ...