Java基于HttpClient如何实现RPC
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章给大家分享的是有关Java基于HttpClient如何实现RPC的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1 HttpClient简介在JDK中java.net
千家信息网最后更新 2026年11月04日Java基于HttpClient如何实现RPC1 HttpClient简介
2 代码实现
2.1 服务端
2.1.1 新建控制器
2.1.2 新建启动器
2.2 客户端
2.2.1 添加依赖
2.2.2 新建类
3. Jackson用法
3.1 把对象转换为json字符串
3.2 把json字符串转换为对象
3.3 把json字符串转换为List集合
4 HttpClient请求包含JSON
4.1 java代码实现
5 控制器接口参数
6 Ajax发送json参数写法
这篇文章给大家分享的是有关Java基于HttpClient如何实现RPC的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
1 HttpClient简介
在JDK中java.net包下提供了用户HTTP访问的基本功能,但是它缺少灵活性或许多应用所需要的功能。
HttpClient起初是Apache Jakarta Common 的子项目。用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本。2007年成为顶级项目。
通俗解释:HttpClient可以实现使用Java代码完成标准HTTP请求及响应。
2 代码实现
2.1 服务端
新建项目HttpClientServer
2.1.1 新建控制器
com.mrshun.controller.DemoController@Controllerpublic class DemoController { @RequestMapping("/demo") @ResponseBody public String demo(String param){ return "demo"+param; }}2.1.2 新建启动器
新建启动器
com.mrshun.HttpClientServerApplication@SpringBootApplicationpublic class HttpClientServerApplication { public static void main(String[] args) { SpringApplication.run(HttpClientServerApplication.class,args); }}2.2 客户端
新建HttpClientDemo项目
2.2.1 添加依赖
org.apache.httpcomponents httpclient 4.5.10
2.2.2 新建类
新建com.mrshun.HttpClientDemo,编写主方法。
2.2.2.1 使用GET方法访问
public static void main(String[] args) { try { //创建http工具(理解成:浏览器) 发起请求,解析响应 CloseableHttpClient httpClient = HttpClients.createDefault(); //请求路径 URIBuilder uriBuilder = new URIBuilder("http://localhost:8080/demo"); uriBuilder.addParameter("param", "get123"); //创建HttpGet请求对象 HttpGet get = new HttpGet(uriBuilder.build()); //创建响应对象 CloseableHttpResponse response = httpClient.execute(get); //由于响应体是字符串,因此把HttpEntity类型转换为字符串类型,并设置字符编码 String result = EntityUtils.toString(response.getEntity(), "utf-8"); //输出结果 System.out.println(result); //释放资源 response.close(); httpClient.close(); } catch (URISyntaxException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }}2.2.2.2 使用POST方式访问
public class HttpClientDemo { public static void main(String[] args) { try { //创建http工具(理解成:浏览器) 发起请求,解析响应 CloseableHttpClient httpClient = HttpClients.createDefault(); //创建HttpPOST请求对象 HttpPost post = new HttpPost("http://localhost:8080/demo"); //所有请求参数 List params = new ArrayList<>(); params.add(new BasicNameValuePair("param","123")); //创建HttpEntity接口的文本实现类的对象,放入参数并设置编码 HttpEntity httpEntity = new UrlEncodedFormEntity(params,"utf-8"); //放入到HttpPost对象中 post.setEntity(httpEntity); //创建响应对象 CloseableHttpResponse response = httpClient.execute(post); //由于响应体是字符串,因此把HttpEntity类型转换为字符串类型 String result = EntityUtils.toString(response.getEntity()); //输出结果 System.out.println(result); //释放资源 response.close(); httpClient.close(); } catch (IOException e) { e.printStackTrace(); } }} 3. Jackson用法
3.1 把对象转换为json字符串
ObjectMapper objectMapper = new ObjectMapper();People peo = new People();objectMapper.writeValueAsString(peo);
3.2 把json字符串转换为对象
ObjectMapper objectMapper = new ObjectMapper();People peo = objectMapper.readValue(content, People.class);
3.3 把json字符串转换为List集合
ObjectMapper objectMapper = new ObjectMapper();JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, People.class);Listlist = objectMapper.readValue(content, javaType);
4 HttpClient请求包含JSON
4.1 java代码实现
public class HttpClientDemo { public static void main(String[] args) { try { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost post = new HttpPost("http://localhost:8080/demo"); HttpEntity httpEntity= null;String json = "{}"; StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON); post.setEntity(entity); CloseableHttpResponse response = httpClient.execute(post); String result = EntityUtils.toString(response.getEntity()); System.out.println(result); response.close(); httpClient.close(); } catch (IOException e) { e.printStackTrace(); } }}5 控制器接口参数
@RequestBody把请求体中流数据转换为指定的对象。多用在请求参数是json数据且请求的Content-Type="application/json"
@RequestMapping("/demo4")@ResponseBodypublic String demo4(@RequestBody List list) { System.out.println(list); return list.toString();} 6 Ajax发送json参数写法
var json = '[{"id":123,"name":"mrshun"},{"id":123,"name":"zhangyongshun"}]'; $.ajax({ url:'/demo5', type:'post', success:function(data){ alert(data); for(var i = 0 ;i7 跨域
跨域:协议、ip、端口中只要有一个不同就是跨域请求。
同源策略:浏览器默认只允许ajax访问同源(协议、ip、端口都相同)内容。
解决同源策略:
在控制器接口上添加@CrossOrigin。表示允许跨域。本质在响应头中添加Access-Control-Allow-Origin: *
var json = '[{"id":123,"name":"mrshun"},{"id":456,"name":"zhangyongshun"}]'; $.ajax({ url:'/demo5', type:'post', success:function(data){ alert(data); for(var i = 0 ;i感谢各位的阅读!关于"Java基于HttpClient如何实现RPC"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
对象
字符
类型
内容
字符串
参数
代码
功能
工具
接口
控制器
浏览器
项目
同源
控制
浏览
启动器
客户
客户端
数据
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
手冲咖啡和咖啡机区别
广州大一互联网络科技有限公司
互联网科技公司起名
云之行互联网科技
科技金融是不是互联网金融
互联网科技巨头监管
安徽鑫晟辉互联网科技
融势互联网科技
互联网科技网站
互联网科技的未来发展
深圳艾佳互联网科技
互联网科技有限公司 翻译
成都铂石互联网科技做什么的
深圳市罗太互联网科技有限公司
小米互联网科技园入驻
互联网科技数字货币
宁波跨境商互联网科技有限公司
济南小医互联网科技有限公司招聘
互联网界的黑科技
福仕德教育科技互联网
互联网科技巨头监管
互联网科技公司招聘
汉立互联网科技有限公司联系电话
湖南诚度互联网科技有限公司
佳云科技和互联网广告
中国互联网十大科技股排名
西安小鹰速贷互联网科技有限公司
为客找房互联网科技公司怎么样
互联网风格科技公司名称
唯美互联网科技