Java原生无依赖使用HttpURLConnection实现Get的例子

2022-08-02 587点热度 0人点赞 0条评论

Java代码环境,想要发起一个http的GET请求,如果想要简单的无依赖的实现(比如就使用一次的简单场景),那么使用Java原生自带的HttpURLConnection就可以实现,比较复杂且使用较多的场景,那么还是推荐使用第三方的库,例如:OKHttp,使用方法见:https://blog.terrynow.com/2021/03/09/java-http-library-okhttp3-how-to/

HttpURLConnection发起GET请求使用方法如下:

public static String httpGet(String url) throws IOException {
    HttpURLConnection connection = null;
    try {
        connection = (HttpURLConnection) new URL(url).openConnection();
        connection.setDoOutput(true);
        connection.setRequestMethod("GET");
        connection.setConnectTimeout(60000);
        connection.setReadTimeout(60000);
// 可以增加其他header,key/value的方式
        connection.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36");

        int responseCode = connection.getResponseCode();
//          如果状态代码不是200,还可以从 connection.getErrorStream(); 读取错误信息
        if (responseCode == 200) {
            return getStringFromInputStream(connection.getInputStream());
        } else {
            throw new IOException("http get error return code: " + responseCode + ", url: " + url);
        }
    } finally {
        if (connection != null) {
            connection.disconnect();
        }
    }

}

/**
 * 从stream流读取内容
 */
private static String getStringFromInputStream(InputStream is) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)); // 获取输入流
    String line;
    StringBuilder sb = new StringBuilder();
    while ((line = br.readLine()) != null) {
        sb.append(line + "\n");
    }
    return sb.toString();
}

POST的例子详见:https://blog.terrynow.com/2022/08/06/java-no-dependency-http-url-connection-post-json-example/

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论