http调用端HttpClient、DefaultHttpClient、CloseableHttpClient
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的更多相关文章
- HttpClient,DefaultHttpClient使用详解
HttpClient:是一个接口 首先需要先创建一个DefaultHttpClient的实例 HttpClient httpClient=new DefaultHttpClient(); 发送GET请 ...
- net core天马行空系列:移植Feign,结合Polly,实现回退,熔断,重试,超时,做最好用的声明式http服务调用端
系列目录 1.net core天马行空系列:原生DI+AOP实现spring boot注解式编程 2.net core天马行空系列: 泛型仓储和声明式事物实现最优雅的crud操作 3.net core ...
- WebForm 用户控件 委托 实现 textbox后台赋值 调用端处理实现 textchange
新建一个简单的用户控件,如下图所示 textbox只读,button按钮模拟实现一堆业务逻辑后对textbox赋值. 用户控件后台代码也很简单 public partial class UTTCont ...
- Spring cloud Feign 调用端不生效
如果提供方的接口经过测试是没问题的话. 消费方启动类加上@EnableFeignClients 注意定义的接口如果不和启动类在同一个包路径下,需要加basePackages 即:@EnableFeig ...
- 使用HttpClient调用WebAPI接口,含WebAPI端示例
API端: using log4net; using System; using System.Collections.Generic; using System.IO; using System.L ...
- Java调用Http/Https接口(4)--HttpClient调用Http/Https接口
HttpClient是Apache HttpComponents项目下的一个组件,是Commons-HttpClient的升级版,两者api调用写法也很类似.文中所使用到的软件版本:Java 1.8. ...
- 使用Httpclient 完美解决服务端跨域问题
项目需求: jsonp是从前台js的角度考虑,通过Ajax调用springMVC的接口.同一个ip.同一个网络协议.同一个端口,三者都满足就是同一个域,否则就是跨域问题了.首页广告需要一个轮播的效果, ...
- HttpClient测试类请求端和服务端即可能出现乱码的解决
junit HttpClient 请求端 代码: package com.taotao.httpclient; import java.util.ArrayList; import java.util ...
- HttpClient 远程接口调用方式
远程接口调用方式HttpClient 问题:现在我们已经开发好了接口了,那该如何调用这个接口呢? 答:使用Httpclient客户端. Httpclient简介 什么是httpclient Htt ...
随机推荐
- JDBC加载数据库驱动的方式
JDBC作为数据库访问的规范接口,其中只是定义一些接口.具体的实现是由各个数据库厂商来完成. 一.重要的接口: 1.public interface Driver 每个驱动程序类必须实现的接口.Jav ...
- Elasticsearch重要配置
虽然Elasticsearch需要很少的配置,但是有一些设置需要手动配置,并且必须在进入生产之前进行配置. path.data and path.logs cluster.name node.nam ...
- Nginx+Keepalived 主备高可用 安装与配置
环境说明:操作系统:CentOS6.7 x86_64Nginx版本:nginx-1.9.7Keepalived版本:keepalived-1.2.24 主nginx + Keepalived :10. ...
- mongodb入门笔记
mongodb作为nosql中排名第一的数据库,近年来使用的人数越来越多,作为开发人员,非常有必要了解下mongodb数据库.下面就给大家介绍下mongodb数据库的基本知识,有不对的地方欢迎指正,Q ...
- 合并静态库出现 can't move temporary file错误
静态库的制作就不说了很简单,网上也很多例子,这里主要讲下我合并通用静态库时候遇见的坑,在合并前注意.a文件一定要正确,我有一次scheme选了release但是device忘了换,结果怼着两个模拟器静 ...
- vue1与vue2的路由 以及vue2项目大概了解
vue1的路由 1.设置根组件 Vue.extend() 2.设置局部组件 Vue.extend({template:"/home"}) 3.实例化路由 var route ...
- Python的迭代器与生成器
Python中的生成器和迭代器方便好用,但是平时对生成器和迭代器的特性掌握的不是很到位,今天将这方面的知识整理一下. 迭代器 为了更好的理解迭代器和生成,我们需要简单的回顾一下迭代器协议的概念. 迭代 ...
- ASP.NET MVC Bundling and RequireJS
关于ASP.NET MVC Bundling and RequireJS的取舍问题,最近比较困惑,我希望有一种方式可以结合两者的优点.作为.NET程序员,难道你没有过这方面的困惑吗? 因为我感觉各自都 ...
- 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 ...
- 11.巨坑,注意了,关于显示不正常的问题,localstorage的存储问题
在存储时,localstorage和sessionstorage只能存储字符串,所以,必须把json转换为字符串再存,JSON.stringify