今天在做 今日指数 项目 时 需要获得实时股票数据,在项目中
当前我们的数据库中的股票数据都是伪造出来的,实际上项目中的股票数据需要借助第三方接口实时拉取;
Spring框架已为我们封装了一套后端访问http接口的模板工具:RestTemplate。
RestTemplate非常轻量级,使用简单易上手。
使用resttmeplate 对指定网站进行 发起post请求 或者其他请求 获取数据
1首先 在 配置一个 HttpConfig 配置类 在里面定义一个Bean用于让Spring 管理RestTemplate。
@Configuration
public class HttpClientConfig {
/**
* 定义restTemplate bean
* @return
*/
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
2定义需要请求网站的 Url地址
String url ="http://hq.sinajs.cn/list=s_sh000001,s_sz399001"
3设置请求头信息
Referer : 参数是 为了配置 从何处进行的资源访问 初始地址
User-Agent : 参数是为了告诉后端 我只是一个普通的 浏览器浏览而已
如果不知道怎么写的 话 可以使用Postman 测试工具 进行一个访问 他会自动生成
只需要复制即可
//设置请求头信息
HttpHeaders headers = new HttpHeaders();
headers.add("Referer","https://finance.sina.com.cn/stock/");
headers.add("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36");
4 发起Post 请求 将请求之后的结果进行保存
//发起请求
String result = restTemplate.postForObject(innerUrl, new HttpEntity<>(headers), String.class);
5 对于获取之后 的数据进行 截取
可以使用String提供的split 或者sub进行截取
或者使用正则表达式进行截取,此方法简单易上手 ,下面介绍如何快速截取需要的内容
假如 返回的数据为
var hq_str_s_sz399001="深证成指,10793.93,71.053,0.66,408492315,57634880";
我们需要的数据可能为
var hq_str_s_sz399001="深证成指,10793.93,71.053,0.66,408492315,57634880";
比如说这俩
我们只需要将其 复制粘贴过来 将 对应需要的模块加上 ()进行匹配即可
reg = "var hq_str_(.+)=(.+)"
如上所示,但是需要注意里面包含的字符串可能存在转义字符。