1. 常用方式
①通过JDK网络类Java.net.HttpURLConnection;
②通过Apache common封装好的HttpClient;
③通过Apache封装好的CloseableHttpClient;
④通过OkHttp;
⑤通过Spring的RestTemplate;
⑥通过hutool的HttpUtil。
2.hutool的HttpUtil的实现方式( 一般spring的restTpemplate和hutool的HttpUtil使用最多,其中hutool最推荐)
① 导入jar包
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.4.1</version>
</dependency>
② 具体使用
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.http.HttpUtil;
import java.util.HashMap;
public class HttpUtilToInterface {
/**
* get请求示例
*/
public static void doGet() {
// 最简单的HTTP请求,可以自动通过header等信息判断编码,不区分HTTP和HTTPS
String result1 = HttpUtil.get("https://www.baidu.com");
// 当无法识别页面编码的时候,可以自定义请求页面的编码
String result2 = HttpUtil.get("https://www.baidu.com", CharsetUtil.CHARSET_UTF_8);
//可以单独传入http参数,这样参数会自动做URL编码,拼接在URL中
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("city", "北京");
String result3 = HttpUtil.get("https://www.baidu.com", paramMap);
}
/**
* post请求示例
*/
public static void doPost() {
//post普通请求示例
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("city", "北京");
String result= HttpUtil.post("https://www.baidu.com", paramMap);
//文件上传示例
HashMap<String, Object> paramMap1 = new HashMap<>();
//文件上传只需将参数中的键指定(默认file),值设为文件对象即可,对于使用者来说,文件上传与普通表单提交并无区别
paramMap1.put("file", FileUtil.file("D:\face.jpg"));
String result1= HttpUtil.post("https://www.baidu.com", paramMap1);
//下载文件(很少用)
String fileUrl = "http://mirrors.sohu.com/centos/8.4.2105/isos/x86_64/CentOS-8.4.2105-x86_64-dvd1.iso";
//将文件下载后保存在E盘,返回结果为下载文件大小
long size = HttpUtil.downloadFile(fileUrl, FileUtil.file("e:/"));
System.out.println("Download size: " + size);
}
}
③ 还可以通过HttpRequest设置头信息和参数等
String url1 = "https://gateway.ns820.com/i2d/sdp/api/Invoice/InvoiceInspection?
appkey=0fe497545a794ea09f72af3b866d50bf×tamp=20230104113212";
HttpRequest post = HttpUtil.createPost(url1);
// 设置头信息
post.header("Content-Type","text/plain");
post.header("sign","F139288D1593318BA230B00D2EA06DE5");
// 设置参数
post.body("3ppJc5WsPpOG3xsRVHga2l4wUkcHYxZcIDsXI36nGEd5NgIblyAEb42yGlp6K14u23EfBxVN9GQJkVyhASpODXc/vSQO7O22NKHUVHQnuuIXYkJ3k28GjNUb/ksu2/5Kg7bOeCmV0sL08Z5ytb4V3fi1kHRBIiLYT4mirZl0g258KV5MUXFkjjHEREbRVPQOVVHlLoRUaWbnmq4Q5oHRrL0p/2tDlGVgNQWaAjdvggzr/Sc6le7Od3v32JF2clI0NuloEmtr5nUov3rtkjTxqPfybG6FNOrn3ErOQNAj1rBPsCJrhky7s6KWwdu4WVX3IUfiphDHDPDycrlxnD55luWRP/LJOfYIf7rmFNs0KCY=");
HttpResponse execute = post.execute();
System.out.println(execute.body());