最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中調用URL請求的5種常見方法詳解

 更新時間:2025年12月25日 09:23:49   作者:ruleslol  
這篇文章主要為大家詳細介紹了Java中調用URL請求的5種常見方法實現(xiàn),文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下

我們主要講最常見的兩種方法:Java原生自帶的 和 第三方好用的庫。

第一部分:Java 自帶的“工具包”(java.net包)

Java自己就提供了一些基礎的通信工具,就像家里自帶的基本工具箱。

方法1:HttpURLConnection (最經典的基礎方法)

步驟:

  • 找到對方的地址(創(chuàng)建URL對象)。
  • 打開一個連接通道(打開HttpURLConnection)。
  • 設置這次溝通的規(guī)則(設置請求方法:GET、POST等)。
  • 準備聽對方回復(獲取響應代碼和輸入流)。
  • 讀取對方說的話(讀取輸入流,得到數(shù)據(jù))。
  • 最后收拾干凈(關閉連接)。

舉個例子(GET請求):

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
 
public class BasicHttpExample {
    public static void main(String[] args) {
        try {
            // 1. 確定服務員地址(API地址)
            String urlString = "https://api.example.com/data";
            URL url = new URL(urlString);
            
            // 2. 打開連接通道
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            
            // 3. 設置溝通規(guī)則:這次我們去“獲取”信息(GET)
            connection.setRequestMethod("GET");
            
            // 4. 看看服務員反應如何(HTTP狀態(tài)碼 200表示成功)
            int responseCode = connection.getResponseCode();
            System.out.println("響應代碼: " + responseCode);
            
            if (responseCode == HttpURLConnection.HTTP_OK) { // 200
                // 5. 讀取服務員返回的話(數(shù)據(jù))
                BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                String inputLine;
                StringBuilder content = new StringBuilder();
                while ((inputLine = in.readLine()) != null) {
                    content.append(inputLine);
                }
                // 6. 把讀到的話打印出來
                System.out.println("響應內容: " + content.toString());
                
                // 7. 收拾干凈
                in.close();
            }
            // 8. 斷開連接
            connection.disconnect();
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

優(yōu)點:Java自帶,無需額外下載。

缺點:代碼比較冗長,手動處理的東西多(比如拼接復雜的POST參數(shù)),不夠現(xiàn)代和優(yōu)雅。

第二部分:使用好用的“第三方工具”

因為原生的工具用起來有點麻煩,所以社區(qū)創(chuàng)造了更好用的庫。

方法2:Apache HttpClient (一個非常流行和強大的庫)

如何使用:

  • 首先,你需要把這個“工具套裝”添加到你的項目中。
  • 使用Maven,在pom.xml里添加依賴
  • 使用它的API來發(fā)送請求。

舉個例子(GET請求):

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
 
public class ApacheHttpClientExample {
    public static void main(String[] args) {
        // 1. 創(chuàng)建一輛智能快遞車(HttpClient實例)
        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            // 2. 寫明送貨地址(創(chuàng)建HttpGet請求)
            HttpGet request = new HttpGet("https://api.example.com/data");
            
            // 3. 發(fā)送請求,并拿到回執(zhí)(執(zhí)行請求,獲取響應)
            try (CloseableHttpResponse response = httpClient.execute(request)) {
                // 4. 檢查回執(zhí)狀態(tài)(狀態(tài)碼)
                System.out.println("響應代碼: " + response.getStatusLine().getStatusCode());
                // 5. 從回執(zhí)里拿出包裹內容(響應實體)
                String responseBody = EntityUtils.toString(response.getEntity());
                System.out.println("響應內容: " + responseBody);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 注意:這里用了try-with-resources語法,會自動關閉車和回執(zhí),不用手動disconnect。
    }
}

優(yōu)點:功能強大,支持HTTPS、連接池、Cookie管理等高級特性,API比原生友好。

方法3:OkHttp (一個更現(xiàn)代、高效的庫)

在Android和現(xiàn)代Java應用中非常流行。

如何使用:

同樣需要先添加依賴到項目。

舉個例子(GET請求):

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
 
public class OkHttpExample {
    public static void main(String[] args) {
        // 1. 創(chuàng)建一輛跑車(OkHttpClient實例)
        OkHttpClient client = new OkHttpClient();
        
        // 2. 構建一個送貨請求單(Request)
        Request request = new Request.Builder()
                .url("https://api.example.com/data")
                .build();
        
        // 3. 用跑車發(fā)出請求單,并拿到回執(zhí)(Response)
        try (Response response = client.newCall(request).execute()) {
            // 4. 檢查回執(zhí)狀態(tài)和內容
            System.out.println("響應代碼: " + response.code());
            if (response.body() != null) {
                String responseBody = response.body().string();
                System.out.println("響應內容: " + responseBody);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

優(yōu)點:API設計非常簡潔優(yōu)雅,默認支持HTTP/2,性能好,是現(xiàn)代Java/Kotlin開發(fā)的首選之一。

第三部分:Spring框架的“快捷方式”(RestTemplate 和 WebClient)

方法4:RestTemplate (Spring的同步傳送門)

Spring家族的老牌成員。你告訴它地址,它直接幫你把遠處的數(shù)據(jù)“拿”回來,甚至能自動轉換成Java對象。

// 需要在Spring項目環(huán)境中
import org.springframework.web.client.RestTemplate;
 
public class SpringRestTemplateExample {
    public static void main(String[] args) {
        RestTemplate restTemplate = new RestTemplate();
        String url = "https://api.example.com/data";
        // 發(fā)送GET請求,并將響應直接轉換為String類
        String result = restTemplate.getForObject(url, String.class);
        System.out.println(result);
    }
}

特點:超級簡單,但它是同步的(發(fā)請求后必須等回復,期間線程會阻塞)。

方法5:WebClient (Spring的異步、響應式傳送門)

Spring家族的新星,支持非阻塞的異步請求,性能更高,適合處理大量并發(fā)請求。

// 需要在Spring WebFlux項目環(huán)境中
import org.springframework.web.reactive.function.client.WebClient;
 
public class SpringWebClientExample {
    public static void main(String[] args) {
        WebClient client = WebClient.create();
        client.get()
                .uri("https://api.example.com/data")
                .retrieve()
                .bodyToMono(String.class) // 這里返回的是“承諾”,而不是立即得到結果
                .subscribe(result -> System.out.println(result)); // 結果未來好了,會在這里打印
        // 主線程不會阻塞,可以繼續(xù)做別的事情
        System.out.println("請求已發(fā)出,我在做別的事...");
    }
}

總結與建議

方法適合場景難度備注
HttpURLConnection學習原理、簡單小工具、環(huán)境受限(不能加庫)中等初學者建議從這里開始理解概念
Apache HttpClient傳統(tǒng)企業(yè)項目,需要豐富功能和穩(wěn)定支持中等功能全,但API稍舊
OkHttp現(xiàn)代Java/Android應用,追求簡潔和性能容易對于新項目,這是非常推薦的選擇
RestTemplate傳統(tǒng)的Spring Boot項目,簡單同步調用非常容易Spring生態(tài),已進入維護模式
WebClient響應式、高并發(fā)的Spring項目中等Spring未來的方向,支持異步

到此這篇關于Java中調用URL請求的5種常見方法詳解的文章就介紹到這了,更多相關Java調用URL請求內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Okhttp在SpringBoot中的應用實戰(zhàn)記錄(太強了)

    Okhttp在SpringBoot中的應用實戰(zhàn)記錄(太強了)

    這篇文章主要給大家介紹了關于Okhttp在SpringBoot中應用實戰(zhàn)的相關資料,在Spring Boot中使用OkHttp主要是為了發(fā)送HTTP請求和處理響應,OkHttp是一個高效、易用的HTTP客戶端庫,它具有簡潔的API和強大的功能,需要的朋友可以參考下
    2023-12-12
  • springboot多環(huán)境配置文件及自定義配置文件路徑詳解

    springboot多環(huán)境配置文件及自定義配置文件路徑詳解

    這篇文章主要介紹了springboot多環(huán)境配置文件及自定義配置文件路徑,文中給大家介紹了classpath的基本概念講解及自定義springboot配置文件路徑的相關知識,需要的朋友可以參考下
    2023-02-02
  • classpath和classpath*的區(qū)別詳解

    classpath和classpath*的區(qū)別詳解

    這篇文章主要為大家介紹了classpath和classpath*的區(qū)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • Spring Boot 4 與 Spring Framework 7新特性、升級要點與實戰(zhàn)指南

    Spring Boot 4 與 Spring Framework&nb

    SpringBoot4和SpringFramework7帶來了大量新特性,包括升級到JakartaEE11、支持Java21、增強模塊化、優(yōu)化測試、增加彈性功能等,本文介紹Spring Boot 4 與 Spring Framework 7新特性、升級要點與實戰(zhàn)指南,感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • Spring Boot 集成 Solr 的詳細示例

    Spring Boot 集成 Solr 的詳細示例

    這篇文章主要介紹了Spring Boot 集成 Solr 的詳細示例,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2025-05-05
  • 一文詳解SpringBoot?Redis多數(shù)據(jù)源配置

    一文詳解SpringBoot?Redis多數(shù)據(jù)源配置

    Spring?Boot默認只允許一種?Redis?連接池配置,且配置受限于?Lettuce?包,不夠靈活,所以本文將為大家介紹如何自定義Redis配置方案實現(xiàn)多數(shù)據(jù)源支持,需要的可以參考下
    2024-11-11
  • springboot打包jar中沒有主清單屬性問題

    springboot打包jar中沒有主清單屬性問題

    這篇文章主要介紹了springboot打包jar中沒有主清單屬性問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • idea中git如何修改commit(ChangeList的使用)

    idea中git如何修改commit(ChangeList的使用)

    這篇文章主要介紹了idea中git如何修改commit(ChangeList的使用),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • springboot?vue測試平臺接口定義前后端新增功能實現(xiàn)

    springboot?vue測試平臺接口定義前后端新增功能實現(xiàn)

    這篇文章主要介紹了springboot?vue測試平臺接口定義前后端新增功能實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • SpringBoot 整合Lock4j 分布式鎖深度使用案例講解

    SpringBoot 整合Lock4j 分布式鎖深度使用案例講解

    本文介紹SpringBoot分布式鎖框架Lock4j,支持Redis、Zookeeper等多種存儲實現(xiàn),通過注解和AOP簡化鎖管理,提供并發(fā)控制、防止重復提交等場景應用,并支持自定義執(zhí)行器和key生成策略,適用于高并發(fā)和異構系統(tǒng)需求,感興趣的朋友一起看看吧
    2025-07-07

最新評論

洪江市| 城步| 图们市| 博乐市| 宁陵县| 平陆县| 龙州县| 阜城县| 中宁县| 沽源县| 额敏县| 万盛区| 洞口县| 晋城| 澄城县| 基隆市| 宝清县| 安达市| 浮山县| 岳池县| 益阳市| 通州市| 怀来县| 广丰县| 安西县| 和田市| 瑞金市| 木里| 息烽县| 南城县| 红河县| 宁远县| 昌江| 邛崃市| 新疆| 泰来县| 泸西县| 右玉县| 即墨市| 金堂县| 武清区|