博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十六章 springboot + OKhttp + String.format
阅读量:6506 次
发布时间:2019-06-24

本文共 4487 字,大约阅读时间需要 14 分钟。

模拟浏览器向服务器发送请求四种方式:

  • jdk原生的Http包下的一些类
  • httpclient(比较原始,不怎么用了):
  • Okhttp(好用,推荐)
  • retrofit(好用,推荐),用法:

看本章之前可以先看看

1、myboot2项目

1.1、application.properties

1 server.port=8081
View Code

注意:指定服务器启动端口的有三种方式

  • 在application.properties文件中配置server.port = xxx(xxx为端口,eg.8081)(最推荐)
  • 启动类实现EmbeddedServletContainerCustomizer接口,并重写其方法,参考
  • 打好jar后,"java -jar xx.jar --server.port=8081"

1.2、pom.xml

1         
2
3
org.projectlombok
4
lombok
5
1.16.8
6
provided
7
View Code

1.3、com.xxx.secondboot.domain.Hotel

1 package com.xxx.secondboot.domain; 2  3 import lombok.AllArgsConstructor; 4 import lombok.Getter; 5 import lombok.NoArgsConstructor; 6 import lombok.Setter; 7  8 @Getter @Setter 9 @AllArgsConstructor @NoArgsConstructor10 public class Hotel {11     private int id;12     private String hotelname;13 }
View Code

1.4、com.xxx.secondboot.web.HotelController

1 @RestController 2 @RequestMapping("/hotel") 3 @Api("HotelController相关api") 4 public class HotelController { 5  6     @ApiOperation("获取酒店Hotel信息:getHotelInfo") 7     @RequestMapping(value="/getHotelInfo",method=RequestMethod.GET) 8     public Hotel getHotelInfo(@RequestParam("id") int id, @RequestParam("name") String name) { 9         return new Hotel(id, name);10     }11 }
View Code

说明:上边的接口,就是准备被调用的接口。

 

2、myboot1项目

2.1、pom.xml

1         
2
3
com.squareup.okhttp
4
okhttp
5
2.7.5
6
View Code

2.2、application-dev.properties

1 service.hotel.url = http://localhost:8081/hotel/getHotelInfo?id=%d&name=%s
View Code

注意:这里使用了String.format()特性,使用指定符号作为占位符进行占位。

  • 关于占位符的类型参考:
  • 一定要注意,是%d,而不是d%

2.3、application.properties

1 spring.profiles.active=dev
View Code

2.4、com.xxx.firstboot.config.OkHttpClientConfig

1 package com.xxx.firstboot.config; 2  3 import org.springframework.context.annotation.Bean; 4 import org.springframework.context.annotation.Configuration; 5  6 import com.squareup.okhttp.OkHttpClient; 7  8 @Configuration 9 public class OkHttpClientConfig {10 11     @Bean12     public OkHttpClient okHttpClient(){13         return new OkHttpClient();14     }15 }
View Code

说明:建立OkHttpClient单例。

2.5、com.xxx.firstboot.web.AddressController

1     @RequestMapping(value = "/testokhttp", method = RequestMethod.GET) 2     public String testokhttp(@RequestParam("id") int id, @RequestParam("name") String name) { 3         String url = String.format(HOTEL_URL, id, name); 4         try { 5             Request request = new Request.Builder().url(url).build(); 6             Response response = okHttpClient.newCall(request).execute(); 7             String result = response.body().string(); 8             LOGGER.debug("testokhttp成功,url:'{}',result:'{}'", url, result); 9             return result;10         } catch (IOException e) {11             LOGGER.error("testokhttp失败,url:'{}'", url);12             e.printStackTrace();13         }14         return "";15     }
View Code

说明:这里只是同步get方式,关于okhttp的其他用法,参考:

补充:其实上边这种写法还是有问题的,忘记关闭资源,最终代码如下:

1     @RequestMapping(value = "/testokhttp", method = RequestMethod.GET) 2     public String testokhttp(@RequestParam("id") int id, @RequestParam("name") String name) { 3         String url = String.format(HOTEL_URL, id, name); 4         Response response = null; 5         try { 6             Request request = new Request.Builder().url(url).build(); 7             response = okHttpClient.newCall(request).execute(); 8             String result = response.body().string(); 9             LOGGER.debug("testokhttp成功,url:'{}',result:'{}'", url, result);10             return result;11         } catch (IOException e) {12             LOGGER.error("testokhttp失败,url:'{}'", url);13             e.printStackTrace();14         }finally {15             if(response.body()!=null){16                 try {17                     response.body().close();//一定要关闭,不然会泄露资源18                 } catch (IOException e) {19                     e.printStackTrace();20                 }21             }22         }23         return "";24     }
View Code

2.6、logback.xml

1 
2
3
4
10
11 12
13
14
15
16
17 18
19
20
21
22
23
24
View Code

转载地址:http://bgwfo.baihongyu.com/

你可能感兴趣的文章
高德开放平台推出LBS游戏行业解决方案提供专业地图平台能力支持
查看>>
追求绿色数据中心
查看>>
Web开发初学指南
查看>>
OpenStack Days China:华云数据CTO郑军分享OpenStack创新实践
查看>>
探寻光存储没落的真正原因
查看>>
高通64位ARMv8系列服务器芯片商标命名:Centriq
查看>>
中国人工智能学会通讯——融合经济学原理的个性化推荐 1.1 互联网经济系统的基本问题...
查看>>
盘点大数据商业智能的十大戒律
查看>>
戴尔为保护数据安全 推出新款服务器PowerEdge T30
查看>>
今年以来硅晶圆涨幅约达40%
查看>>
构建智能的新一代网络——专访Mellanox市场部副总裁 Gilad Shainer
查看>>
《数字视频和高清:算法和接口》一导读
查看>>
《中国人工智能学会通讯》——6.6 实体消歧技术研究
查看>>
如何在Windows查看端口占用情况及查杀进程
查看>>
云存储应用Upthere获7700万美元股权债务融资
查看>>
国家互联网应急中心何世平博士主题演讲
查看>>
洗茶,你误会了多少年?
查看>>
移动大数据“后市场”受青睐 亟需数据深度学习人才
查看>>
贵阳高新区力争打造“千亿级大数据园区”
查看>>
安防众筹不止于卖产品 思维拓展刺激消费
查看>>