Java实现http请求访问的实现和处理DefaultHttpClient过期和URL连接格式问题

2023-11-12

Java实现http请求代码

String strUrl="http://172.0.0.1:80/api/Notifiction/sendForbidden?userId=dhdhsh&data=shshh;
try {
     //增加代码下面两行代码解决URL特殊字符问题如‘|’‘&’{}等
     URL url = new URL(strUrl);
     URI uri = new URI(url.getProtocol(),url.getUserInfo(), url.getHost(),url.getPort() ,url.getPath(), url.getQuery(), null);
     //获取http请求解决DefaultHttpClient过期方案
     HttpGet httpGet = new HttpGet(uri);
     CloseableHttpClient client= HttpClients.createDefault();
     CloseableHttpResponse response = client.execute(httpGet);
     //获取返回值String entity = EntityUtils.toString(response.getEntity(), Charset.defaultCharset());,我这里不需要获取返回值所以写的简单
     response.getEntity();
     response.close();
} catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
}

补充:

HttpClient使用方法:使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可。

  1. 创建HttpClient对象。

  2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。

  3. 如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。

  4. 调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。

  5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。

  6. 释放连接。无论执行方法是否成功,都必须释放连接!

  7. 解决HttpGet出现Illegal character in query异常,使用URI进行解析,根据自己连接格式合理配置参数

CloseableHttpResponse使用

DefaultHttpClient —> CloseableHttpClient
HttpResponse —> CloseableHttpResponse

官方给出了新api的样例,如下。

Get方法:

CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("http://targethost/homepage");
CloseableHttpResponse response1 = httpclient.execute(httpGet);
// The underlying HTTP connection is still held by the response object
// to allow the response content to be streamed directly from the network socket.
// In order to ensure correct deallocation of system resources
// the user MUST either fully consume the response content  or abort request
// execution by calling CloseableHttpResponse#close().
//建立的http连接,仍旧被response1保持着,允许我们从网络socket中获取返回的数据
//为了释放资源,我们必须手动消耗掉response1或者取消连接(使用CloseableHttpResponse类的close方法)

try {
    System.out.println(response1.getStatusLine());
    HttpEntity entity1 = response1.getEntity();
    // do something useful with the response body
    // and ensure it is fully consumed
    EntityUtils.consume(entity1);
} finally {
    response1.close();
}

Post方法:

HttpPost httpPost = new HttpPost("http://targethost/login");
//拼接参数
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("username", "vip"));
nvps.add(new BasicNameValuePair("password", "secret"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps));
CloseableHttpResponse response2 = httpclient.execute(httpPost);
 
try {
    System.out.println(response2.getStatusLine());
    HttpEntity entity2 = response2.getEntity();
    // do something useful with the response body
    // and ensure it is fully consumed
    //消耗掉response
    EntityUtils.consume(entity2);
} finally {
    response2.close();
}

参考连接
https://blog.csdn.net/zl834205311/article/details/79847746
https://blog.csdn.net/mhqyr422/article/details/79787518

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java实现http请求访问的实现和处理DefaultHttpClient过期和URL连接格式问题 的相关文章

随机推荐

  • 用BeanFactoryAware接口,用BEAN的名称来获取BEAN对象

    用BeanFactoryAware接口 用BEAN的名称来获取BEAN对象 applicationContext beans xml
  • Docker----Dockerfile中执行pip install 命令报 Failed to establish a new connection 错误的解决办法

    原文链接 Docker Dockerfile中执行pip install 命令报 Failed to establish a new connection 错误的解决办法 问题 在Dockerfile文件中通过RUN pip install
  • 计算机视觉2021年3月28最新论文

    编辑 AI速递 计算机视觉 3月28日 1 USB Universal Scale Object Detection Benchmark 标题 USB 万能物体检测基准 链接 https arxiv org abs 2103 14027 2
  • Connected to the target VM, address:XXXX, transport: socket

    问题 1 Connected to the target VM address 127 0 0 1 65604 transport socket 排查方案 我是最近半年多次遇到这个问题 这个就是用debug模式启动程序 方便调试 运行一半直
  • Ablation Study消融研究

    作者 飘哥 链接 https www zhihu com question 291655038 answer 683038545 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 术语 消融研究 通常用于神经网
  • Python解释器验证器工具类

    需求背景 现需要实现一个工具类 功能为验证给定路径是否为有效的 Python 解释器可执行文件 不一定是主程序所使用的解释器 并获取该解释器版本信息 是否安装某模块 包等信息 该工具类将赋予主程序类似 PyCharm 中选取 Python
  • C#的架构、框架、设计模式

    建立层务必使用类库选项 不要使用文件夹 没错 说的就是我自己 一 两层架构 1 架构概述 两层架构适合小型 中小型项目 名称 标识 用途 数据访问对象 DAL 模型服务 需要添加Models引用 实体对象 Models 模型 用户界面 UI
  • SpringMVC @RequestBody 自动转json Http415错误

    项目中想用 RequestBody直接接收json串转成对象 网上查了使用方法 看着非常简单 不过经过测试很快发现页面直接报415错误 h1 HTTP Status 415 h1 hr size 1 p b type b Status re
  • React的几种路由配置方法

    1 标签 常用 import IndexRoute from react router const Dashboard React createClass render return div Welcome to the app div R
  • python内置array模块,与numpy中的array和list之间的转换

    numpy中matrix类型与array类型的转换 如何让 M matrix 1 2 3 4 如何转变为 array 1 2 3 4 比较优雅的办法 x matrix arange 12 reshape 3 4 gt gt gt x mat
  • 全国计算机等级考试题库二级C操作题100套(第76套)

    第76套 给定程序中 函数fun的功能是 计算下式前n项的和作为函数值返回 例如 当形参n的值为10时 函数返回 0 204491 请在程序的下划线处填入正确的内容并把下划线删除 使程序得出正确的结 果 注意 源程序存放在考生文件夹下的BL
  • 使用Fiddler修改请求参数

    1 下载比较新版的Fiddler 2 进入到调试的页面 并填写好参数 以获取短信验证码接口为例 3 先清空Fiddler列表中已经存在的请求 以便观察 4 打开断点调试 下面两种方式都可以 F11是快捷键 按F11 键盘快捷键 或者如下图勾
  • Qt在嵌入式系统QNX的HMI应用方案

    author 锋影 扣扣 174176320 e mail 174176320 qq com 黑莓推出了其全新的黑莓10平台QT的智能手机和平板电脑 它产生了大量的兴趣在QT上移动 黑莓10是基于QNX1操作系统的黑莓 也许不是很出名 是Q
  • lightGBM 调参

    文章目录 1 概述 1 lgb cv函数使用方法 1 参数 2 param需要填写的参数 2 GridSearchCV调参 第一步 学习率和迭代次数 第二步 确定max depth和num leave 第三步 确定min data in l
  • Mac配置与下载安卓SDK,配置adb命令

    所以如果想要单独下载SDK 参考如下步骤 文章目录 配置步骤 1 首先需要安装java的JDK 2 解压上面下载好的文件 3 补充SDK内容 4 配置环境变量 5 测试adb命令 其他信息 配置步骤 1 首先需要安装java的JDK 首先登
  • Linux查看磁盘空间

    如何查看磁盘空间 1 查看内存空间 dever iZ2zeewvm4yos65shrzg3wZ free total used free shared buff cache available Mem 7724300 1528996 300
  • vue项目的webpack打包优化

    前言 我第一次从搭建项目环境 到打包准备上线测试 vue对开发者来说学习成本不高 带来了很多的便利 没有经过如何优化 直接打包出来 打开页面时就看到无尽的加载中 啥 是网络不好了 等了半分钟时间页面终于出现了 我第一次打包 所以百度做功课
  • Xilinx IP核手册阅读——FIFO

    目录 Introduction Ch 1 Overview Feature Summary Native FIFO Interface Signals Applications Native FIFO Applications Ch 2 P
  • 笔记本电脑销量排名_2020最佳笔记本电脑品牌公布!华硕第一,戴尔惠普分列二三名_搜狐汽车...

    本文车型速览 除了文章作者的主观观点外 我们正尝试基于全网可查的客观数据 为您提供中立 客观的参考依据 本文部分车型速览 展开 微信扫码 直接一次看完附近所有城市低价 附近城市均有经销商可售卖至本市 2020最佳笔记本电脑品牌公布 华硕第一
  • Java实现http请求访问的实现和处理DefaultHttpClient过期和URL连接格式问题

    Java实现http请求代码 String strUrl http 172 0 0 1 80 api Notifiction sendForbidden userId dhdhsh data shshh try 增加代码下面两行代码解决UR