<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                {% raw %} # Java HTTP GET/POST 請求 原文:http://zetcode.com/java/getpostrequest/ 本教程顯示了如何使用 Java 發送 GET 和 POST 請求。 我們使用內置的`HttpURLConnection`類以及標準的 Java 和 Apache `HttpClient`類。 ## HTTP 超文本傳輸??協議(HTTP)是用于分布式協作超媒體信息系統的應用協議。 HTTP 是萬維網數據通信的基礎。 在示例中,我們使用`httpbin.org`(這是一個免費的 HTTP 請求和響應服務),以及`webcode.me`(這是一個用于測試的小型 HTML 頁面)。 ## HTTP GET HTTP GET 方法請求指定資源的表示形式。 使用 GET 的請求應僅檢索數據。 ## HTTP POST HTTP POST 方法將數據發送到服務器。 在上載文件或提交完整的 Web 表單時,通常使用它。 ## Java 11 `HttpClient`的 GET 請求 從 Java 11 開始,我們可以使用`java.net.http.HttpClient`。 `com/zetcode/GetRequestJava11.java` ```java package com.zetcode; import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class GetRequestJava11 { public static void main(String[] args) throws IOException, InterruptedException { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("http://webcode.me")) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body()); } } ``` 我們向`webcode.me`網頁創建 GET 請求。 ```java HttpClient client = HttpClient.newHttpClient(); ``` 使用`newHttpClient()`工廠方法創建一個新的`HttpClient`。 ```java HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("http://webcode.me")) .build(); ``` 我們建立對該網頁的同步請求。 默認方法是 GET。 ```java HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body()); ``` 我們發送請求并檢索響應的內容,然后將其打印到控制臺。 ```java <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>My html page</title> </head> <body> <p> Today is a beautiful day. We go swimming and fishing. </p> <p> Hello there. How are you? </p> </body> </html> ``` 這是輸出。 ## Java 11 `HttpClient`的 Java HTTP POST 請求 下一個示例使用 Java 11 `HttpClient`創建 POST 請求。 ```java <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.9.3</version> </dependency> ``` 我們需要`jackson-databind`依賴項。 `com/zetcode/PostRequestJava11.java` ```java package com.zetcode; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.util.HashMap; public class HttpClientPost { public static void main(String[] args) throws IOException, InterruptedException { var values = new HashMap<String, String>() {{ put("name", "John Doe"); put ("occupation", "gardener"); }}; var objectMapper = new ObjectMapper(); String requestBody = objectMapper .writeValueAsString(values); HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://httpbin.org/post")) .POST(HttpRequest.BodyPublishers.ofString(requestBody)) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body()); } } ``` 我們將 POST 請求發送到`https://httpbin.org/post`頁面。 ```java var values = new HashMap<String, String>() {{ put("name", "John Doe"); put ("occupation", "gardener"); }}; var objectMapper = new ObjectMapper(); String requestBody = objectMapper .writeValueAsString(values); ``` 首先,我們使用 Jackson 的`ObjectMapper`構建請求主體。 ```java HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://httpbin.org/post")) .POST(HttpRequest.BodyPublishers.ofString(requestBody)) .build(); ``` 我們構建 POST 請求。 使用`BodyPublishers.ofString()`創建一個新的`BodyPublisher`。 它將高級 Java 對象轉換為適合作為請求正文發送的字節緩沖區流。 ```java HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body()); ``` 我們發送請求并檢索響應。 ```java { "args": {}, "data": "{\"occupation\":\"gardener\",\"name\":\"John Doe\"}", "files": {}, "form": {}, "headers": { "Content-Length": "43", "Host": "httpbin.org", "User-Agent": "Java-http-client/12.0.1" }, "json": { "name": "John Doe", "occupation": "gardener" }, ... "url": "https://httpbin.org/post" } ``` 這是輸出。 ## 使用`HttpURLConnection`的 Java HTTP GET 請求 以下示例使用`HttpURLConnection`創建 GET 請求。 `com/zetcode/JavaGetRequest.java` ```java package com.zetcode; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class JavaGetRequest { private static HttpURLConnection con; public static void main(String[] args) throws IOException { var url = "http://webcode.me"; try { var myurl = new URL(url); con = (HttpURLConnection) myurl.openConnection(); con.setRequestMethod("GET"); StringBuilder content; try (BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream()))) { String line; content = new StringBuilder(); while ((line = in.readLine()) != null) { content.append(line); content.append(System.lineSeparator()); } } System.out.println(content.toString()); } finally { con.disconnect(); } } } ``` 該示例使用 HTTP GET 請求檢索網頁。 ```java var url = "http://webcode.me"; ``` 我們檢索此小型網頁的內容。 ```java var myurl = new URL(url); con = (HttpURLConnection) myurl.openConnection(); ``` 創建到指定 URL 的連接。 ```java con.setRequestMethod("GET"); ``` 我們使用`setRequestMethod()`方法設置請求方法類型。 ```java try (BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream()))) { ``` 輸入流是從 HTTP 連接對象創建的。 輸入流用于讀取返回的數據。 ```java content = new StringBuilder(); ``` 我們使用`StringBuilder`構建內容字符串。 ```java while ((line = in.readLine()) != null) { content.append(line); content.append(System.lineSeparator()); } ``` 我們使用`readLine()`逐行從輸入流中讀取數據。 每行都添加到`StringBuilder`中。 在每行之后,我們附加一個與系統有關的行分隔符。 ```java System.out.println(content.toString()); ``` 我們將內容打印到終端。 ## 使用`HttpURLConnection`的 Java HTTP POST 請求 以下示例使用`HttpURLConnection`創建 POST 請求。 `com/zetcode/JavaPostRequest.java` ```java package com.zetcode; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.StandardCharsets; public class JavaPostRequest { private static HttpURLConnection con; public static void main(String[] args) throws IOException { var url = "https://httpbin.org/post"; var urlParameters = "name=Jack&occupation=programmer"; byte[] postData = urlParameters.getBytes(StandardCharsets.UTF_8); try { var myurl = new URL(url); con = (HttpURLConnection) myurl.openConnection(); con.setDoOutput(true); con.setRequestMethod("POST"); con.setRequestProperty("User-Agent", "Java client"); con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); try (var wr = new DataOutputStream(con.getOutputStream())) { wr.write(postData); } StringBuilder content; try (var br = new BufferedReader( new InputStreamReader(con.getInputStream()))) { String line; content = new StringBuilder(); while ((line = br.readLine()) != null) { content.append(line); content.append(System.lineSeparator()); } } System.out.println(content.toString()); } finally { con.disconnect(); } } } ``` 該示例將 POST 請求發送到`https://httpbin.org/post`。 ```java var urlParameters = "name=Jack&occupation=programmer"; byte[] postData = urlParameters.getBytes(StandardCharsets.UTF_8); ``` 我們將編寫這兩個鍵/值對。 我們將字符串轉換為字節數組。 ```java var myurl = new URL(url); con = (HttpURLConnection) myurl.openConnection(); ``` URL 的連接已打開。 ```java con.setDoOutput(true); ``` 通過`setDoOutput()`方法,我們指示我們將數據寫入 URL 連接。 ```java con.setRequestMethod("POST"); ``` HTTP 請求類型通過`setRequestMethod()`設置。 ```java con.setRequestProperty("User-Agent", "Java client"); ``` 我們使用`setRequestProperty()`方法設置用戶年齡屬性。 ```java try (DataOutputStream wr = new DataOutputStream(con.getOutputStream())) { wr.write(postData); } ``` 我們將字節或數據寫入 URL 連接。 ```java StringBuilder content; try (var br = new BufferedReader( new InputStreamReader(con.getInputStream()))) { String line; content = new StringBuilder(); while ((line = br.readLine()) != null) { content.append(line); content.append(System.lineSeparator()); } } System.out.println(content.toString()); ``` 我們讀取連接的輸入流,并將檢索到的內容寫入控制臺。 ## 使用 Apache `HttpClient`的 Java HTTP GET 請求 以下示例使用 Apache `HttpClient`創建 GET 請求。 ```java <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.10</version> </dependency> ``` 對于示例,我們需要此 Maven 依賴關系。 `com/zetcode/ApacheHttpClientGet.java` ```java package com.zetcode; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; public class ApacheHttpClientGet { public static void main(String[] args) throws IOException { try (CloseableHttpClient client = HttpClientBuilder.create().build()) { var request = new HttpGet("http://webcode.me"); HttpResponse response = client.execute(request); var bufReader = new BufferedReader(new InputStreamReader( response.getEntity().getContent())); var builder = new StringBuilder(); String line; while ((line = bufReader.readLine()) != null) { builder.append(line); builder.append(System.lineSeparator()); } System.out.println(builder); } } } ``` 該示例發送 GET 請求以讀取指定網頁的主頁。 ```java try (CloseableHttpClient client = HttpClientBuilder.create().build()) { ``` `CloseableHttpClient`是使用`HttpClientBuilder`構建的。 ```java var request = new HttpGet("http://webcode.me"); ``` `HttpGet`用于創建 HTTP GET 請求。 ```java HttpResponse response = client.execute(request); ``` 我們執行請求并獲得響應。 ```java var bufReader = new BufferedReader(new InputStreamReader( response.getEntity().getContent())); ``` 從響應對象中,我們讀取內容。 ```java while ((line = bufReader.readLine()) != null) { builder.append(line); builder.append(System.lineSeparator()); } ``` 我們逐行讀取內容并動態生成字符串消息。 ## Java HTTP POST 與 Apache `HttpClient` 以下示例使用`HttpPost`創建 POST 請求。 `com/zetcode/ApacheHttpClientPost.java` ```java package com.zetcode; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; public class ApacheHttpClientPost { public static void main(String[] args) throws IOException { try (CloseableHttpClient client = HttpClientBuilder.create().build()) { var request = new HttpPost("https://httpbin.org/post"); request.setHeader("User-Agent", "Java client"); request.setEntity(new StringEntity("My test data")); HttpResponse response = client.execute(request); var bufReader = new BufferedReader(new InputStreamReader( response.getEntity().getContent())); var builder = new StringBuilder(); String line; while ((line = bufReader.readLine()) != null) { builder.append(line); builder.append(System.lineSeparator()); } System.out.println(builder); } } } ``` The example sends a POST request to `https://httpbin.org/post`. ```java var request = new HttpPost("https://httpbin.org/post"); ``` `HttpPost`用于創建 POST 請求。 ```java request.setEntity(new StringEntity("My test data")); ``` 用`setEntity()`方法設置數據。 ```java request.setHeader("User-Agent", "Java client"); ``` 我們使用`setHeader()`方法為請求設置標頭。 ```java HttpResponse response = client.execute(request); ``` 我們執行請求并獲得響應。 ```java var bufReader = new BufferedReader(new InputStreamReader( response.getEntity().getContent())); var builder = new StringBuilder(); String line; while ((line = bufReader.readLine()) != null) { builder.append(line); builder.append(System.lineSeparator()); } System.out.println(builder); ``` 我們閱讀響應并將其打印到終端。 在本教程中,我們使用`HttpURLConnection`以及標準 Java 和 Apache `HttpClient`在 Java 中創建了 GET 和 POST 請求。 您可能也對以下相關教程感興趣: [Python 請求教程](/web/pythonrequests/), [Jsoup 教程](/java/jsoup/), [Java 教程](/lang/java/),[用 Java 讀取網頁](/articles/javareadwebpage/)或 [Google Guava 簡介](/articles/guava/)。 列出[所有 Java 教程](/all/#java)。 {% endraw %}
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看