在日常工作中,经常需要跟第三方系统对接,我们做为客户端,调用他们的接口进行业务处理,常用的几种调用方式有:
1.原生的Java.net.HttpURLConnection(jdk);
2.再次封装的HttpClient、CloseableHttpClient(Apache);
3.Spring提供的RestTemplate;
当然还有其他工具类进行封装的接口,比如hutool的HttpUtil工具类,里面除了post、get请求外,还有下载文件的方法downloadFile等。
HttpURLConnection调用方法
HTTP正文的内容是通过OutputStream流写入,向流中写入的数据不会立即发送到网络,而是存在于内存缓冲区中,待流关闭时,根据写入的内容生成HTTP正文。
调用getInputStream()方法时,会返回一个输入流,用于从中读取服务器对于HTTP请求的返回报文
@Slf4j
public class HttpURLConnectionUtil {
/**
*
* Description: 发送http请求发送post和json格式
* @param url 请求URL
* @param params json格式的请求参数
*/
public static String doPost(String url, String params) throws Exception {
OutputStreamWriter out = null;
BufferedReader reader = null;
StringBuffer response = new StringBuffer();
URL httpUrl = null; // HTTP URL类 用这个类来创建连接
try {
// 创建URL
httpUrl = new URL(url);
log.info("--------发起Http Post 请求 ------------- url:" + url + "---------params:" + params);
// 建立连接
HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();
//设置请求的方法为"POST",默认是GET
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("connection", "keep-alive");
conn.se