06_HttpEntity的使用

本文介绍了HTTP实体的使用方法及资源回收策略,包括字符串实体的创建、内容属性获取、内容转换为字符串和字节数组,以及如何合理管理流实体以避免资源泄漏。

HttpEntity实体即可以使流也可以使字符串形式。

具体有什么用法看他的方法解释:

package com.scl.base;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import org.apache.http.HttpEntity;
import org.apache.http.ParseException;
import org.apache.http.entity.StringEntity;
import org.apache.http.util.EntityUtils;

public class HttpClientDemo06 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			HttpEntity entity = new StringEntity("这一个字符串实体", "UTF-8");
			//内容类型
			System.out.println(entity.getContentType());
			//内容的编码格式
			System.out.println(entity.getContentEncoding());
			//内容的长度
			System.out.println(entity.getContentLength());
			//把内容转成字符串
			System.out.println(EntityUtils.toString(entity));
			//内容转成字节数组
			System.out.println(EntityUtils.toByteArray(entity).length);
			//还有个直接获得流
			//entity.getContent();
		} catch (UnsupportedEncodingException e) {
			throw new RuntimeException(e);
		} catch (ParseException e) {
		} catch (IOException e) {
		}
		
		
	}

}

对于实体的资源使用完之后要适当的回收资源,特别是对于流实体:例子代码如下

public static void test() throws IllegalStateException, IOException{
		HttpResponse response = null;
		HttpEntity entity = response.getEntity();
		
		if(entity!=null){
			 
				InputStream is = entity.getContent();
				try{
					//做一些操作
				}finally{
					//最后别忘了关闭应该关闭的资源,适当的释放资源
					if(is != null){
						is.close();
					}
					//这个方法也可以把底层的流给关闭了
					EntityUtils.consume(entity);
					//下面是这方法的源码
					/*public static void consume(final HttpEntity entity) throws IOException {
				        if (entity == null) {
				            return;
				        }
				        if (entity.isStreaming()) {
				            InputStream instream = entity.getContent();
				            if (instream != null) {
				                instream.close();
				            }
				        }
				    }*/
				}
				
			 
		}


dongwei@dongwei-virtual-machine:~/demo1/demo1_ws$ ros2 launch fishbot_description gazebo.launch.py [INFO] [launch]: All log files can be found below /home/dongwei/.ros/log/2025-07-01-16-14-06-055332-dongwei-virtual-machine-3376 [INFO] [launch]: Default logging verbosity is set to INFO [ERROR] [launch]: Caught exception in launch (see debug for traceback): "package 'gazebo_ros2' not found, searching: ['/home/dongwei/demo1/demo1_ws/install/fishbot_description', '/opt/ros/humble']" dongwei@dongwei-virtual-machine:~/demo1/demo1_ws$ ^C dongwei@dongwei-virtual-machine:~/demo1/demo1_ws$ ros2 launch fishbot_description gazebo.launch.py [INFO] [launch]: All log files can be found below /home/dongwei/.ros/log/2025-07-01-16-15-07-142073-dongwei-virtual-machine-3499 [INFO] [launch]: Default logging verbosity is set to INFO [ERROR] [launch]: Caught exception in launch (see debug for traceback): "package 'gazebo_ros2' not found, searching: ['/home/dongwei/demo1/demo1_ws/install/fishbot_description', '/opt/ros/humble']" dongwei@dongwei-virtual-machine:~/demo1/demo1_ws$ source install/setup.bash dongwei@dongwei-virtual-machine:~/demo1/demo1_ws$ ros2 launch fishbot_description gazebo.launch.py [INFO] [launch]: All log files can be found below /home/dongwei/.ros/log/2025-07-01-16-15-15-682635-dongwei-virtual-machine-3555 [INFO] [launch]: Default logging verbosity is set to INFO [ERROR] [launch]: Caught exception in launch (see debug for traceback): "package 'gazebo_ros2' not found, searching: ['/home/dongwei/demo1/demo1_ws/install/fishbot_description', '/opt/ros/humble']" dongwei@dongwei-virtual-machine:~/demo1/demo1_ws$ colcon build --packages-select fishbot_description Starting >>> fishbot_description Finished <<< fishbot_description [0.17s] Summary: 1 package finished [0.64s] dongwei@dongwei-virtual-machine:~/demo1/demo1_ws$ source install/setup.bash dongwei@dongwei-virtual-machine:~/demo1/demo1_ws$ ros2 launch fishbot_description gazebo.launch.py [INFO] [launch]: All log files can be found below /home/dongwei/.ros/log/2025-07-01-16-15-37-039038-dongwei-virtual-machine-3621 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [gazebo-1]: process started with pid [3622] [INFO] [spawn_entity.py-2]: process started with pid [3624] [gazebo-1] Gazebo multi-robot simulator, version 11.10.2 [gazebo-1] Copyright (C) 2012 Open Source Robotics Foundation. [gazebo-1] Released under the Apache 2 License. [gazebo-1] http://gazebosim.org [gazebo-1] [gazebo-1] Gazebo multi-robot simulator, version 11.10.2 [gazebo-1] Copyright (C) 2012 Open Source Robotics Foundation. [gazebo-1] Released under the Apache 2 License. [gazebo-1] http://gazebosim.org [gazebo-1] [spawn_entity.py-2] [INFO] [1751357738.214872101] [spawn_entity]: Spawn Entity started [spawn_entity.py-2] [INFO] [1751357738.215270633] [spawn_entity]: Loading entity XML from file /home/dongwei/demo1/demo1_ws/install/fishbot_description/share/fishbot_description/urdf/fishbot.urdf [gazebo-1] [Wrn] [gazebo_ros_init.cpp:178] [gazebo-1] # # ####### ####### ### ##### ####### [gazebo-1] ## # # # # # # # # [gazebo-1] # # # # # # # # # [gazebo-1] # # # # # # # # ##### [gazebo-1] # # # # # # # # # [gazebo-1] # ## # # # # # # # [gazebo-1] # # ####### # ### ##### ####### [gazebo-1] [gazebo-1] This version of Gazebo, now called Gazebo classic, reaches end-of-life [gazebo-1] in January 2025. Users are highly encouraged to migrate to the new Gazebo [gazebo-1] using our migration guides (https://gazebosim.org/docs/latest/gazebo_classic_migration?utm_source=gazebo_ros_pkgs&utm_medium=cli) [gazebo-1] [gazebo-1] [spawn_entity.py-2] Traceback (most recent call last): [spawn_entity.py-2] File "/opt/ros/humble/lib/gazebo_ros/spawn_entity.py", line 372, in <module> [spawn_entity.py-2] main() [spawn_entity.py-2] File "/opt/ros/humble/lib/gazebo_ros/spawn_entity.py", line 367, in main [spawn_entity.py-2] exit_code = spawn_entity_node.run() [spawn_entity.py-2] File "/opt/ros/humble/lib/gazebo_ros/spawn_entity.py", line 143, in run [spawn_entity.py-2] self.get_logger().error('Error: specified file %s does not exist', self.args.file) [spawn_entity.py-2] TypeError: RcutilsLogger.error() takes 2 positional arguments but 3 were given [ERROR] [spawn_entity.py-2]: process has died [pid 3624, exit code 1, cmd '/opt/ros/humble/lib/gazebo_ros/spawn_entity.py -entity fishbot -file /home/dongwei/demo1/demo1_ws/install/fishbot_description/share/fishbot_description/urdf/fishbot.urdf --ros-args']. [gazebo-1] [Msg] Waiting for master. [gazebo-1] [Msg] Connected to gazebo master @ http://127.0.0.1:11345 [gazebo-1] [Msg] Publicized address: 192.168.242.128 [gazebo-1] context mismatch in svga_surface_destroy [gazebo-1] context mismatch in svga_surface_destroy 如何修改
07-02
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值