HttpClient
Http是目前非常广泛的一个协议,有时候我们想要用java发送http请求,比如做GitHub的OAuth登录时。
我们除了可以用java提供的库以外,笔者还推荐HttpClient库。
-
引入依赖
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.5</version> </dependency>
(这是apache的开源库)
-
以发送一个GET请求为例
// 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的) static CloseableHttpClient httpClient = HttpClientBuilder.create().build(); public void example(){ //需要try catch捕捉异常 try { //请求url HttpGet httpGet = new HttpGet("https://api.xxx.cn/xxx"); //执行请求并把响应数据赋值给response CloseableHttpResponse response = httpClient.execute(httpGet); //状态码 System.out.println("status: " + response.getStatusLine()); //获取响应数据 HttpEntity httpEntity = response.getEntity(); //输出数据 System.out.println("data: " + EntityUtils.toString(httpEntity) ); }catch (IOException e) { e.printStackTrace(); } finally { try { // 释放资源 if (httpClient != null) { httpClient.close(); } if (response != null) { response.close(); } } catch (IOException e) { e.printStackTrace(); } } }
至此就完成一个http请求
另,一般api返回的是json格式数据,SpringBoot可以使用集成的Jackson,也可以使用阿里的FastJson来获取数据。此处不展开
加密字符串
当涉及到一些隐私/重要数据时,我们通常需要加密字符串,比如用户的密码(本站密码使用了加密,安全性请放心)
apache的codec库
-
引入依赖
<dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.11</version> </dependency>
-
MD5加密
//散列算法,只可加密,不可解密 String md5Hex = DigestUtils.md5Hex("你要加密的字符串");
-
Base64
Base64 base64 = new Base64(); //加密 String s1 = base64.encodeToString("你要加密的字符串".getBytes()); //解密 String s2 = new String(base64.decode("你要解密的字符串"));
-
SHA256
//散列算法,只可加密,不可解密 String s = DigestUtils.sha256Hex("你要加密的字符串");