如何用Java实现http请求

64 阅读1分钟
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.Charset;

public class HttpClientUtil {

    private static final Logger log = LoggerFactory.getLogger(HttpClientUtil.class);

    private HttpClientUtil() {

    }

    public static String doPost(String reqUrl, String json) {

        log.info("接口请求开始,请求地址:{},请求参数:{},token:{}", reqUrl, json, token);
        URL url = null;
        HttpURLConnection conn=null;
        try {
            //新建URL
            url = new URL(reqUrl);
            
            //打开http连接
            conn= (HttpURLConnection) url.openConnection();

            conn.setRequestMethod("POST");// 请求类型 POST
            conn.setDoInput(true); // 允许输入
            conn.setDoOutput(true); // 允许输出
            conn.setConnectTimeout(35000);// 设置连接主机服务超时时间
            conn.setReadTimeout(60000);// 设置读取数据连接超时时间
            // 设置请求头
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("token", "token");

            // 请求建立输出
            OutputStream out = conn.getOutputStream();
            OutputStreamWriter outWriter = new OutputStreamWriter(out, "UTF-8"); // 编码方式
            outWriter.write(json); // 请求报文
            outWriter.flush(); // 发送请求报文

            log.info("send post request ... complete ...");

            int respCode = conn.getResponseCode();
            if (respCode == 200) {
                //响应输出
                InputStream in = conn.getInputStream();
                InputStreamReader inReader = new InputStreamReader(in,"UTF-8");
                // 建立读取缓存
                BufferedReader bufReader = new BufferedReader(inReader);

                StringBuilder sb = new StringBuilder();
                String line;// 数据行

                while ((line = bufReader.readLine()) != null)
                    sb.append(line);

                log.info("接口请求成功,响应报文:{}", sb.toString());

                return sb.toString();

            }

            log.error("http request error, response code is [{}]", respCode);
            return null;
        } catch (Exception e) {
            log.error("do http post error", e);
            return null;
        } finally { // 关闭资源
            url = null;
            if (conn != null)
                conn.disconnect();
        }

    }

}