Java 11:在Java中處理HTTP和WebSocket的新方法!
藉助Java 11,Rest API呼叫非常簡單輕鬆。在本文中,Adrian D. Finlay解釋瞭如何利用Java 11中的新非同步API來執行REST API呼叫,實現HTTP和WebSocket操作。
曾幾何時,使用Java SE(標準版)API執行常見的HTTP操作(如REST API呼叫)可能被描述為不自然且繁瑣。Java 11正式改變了這一點。
從Java 11開始,API現在完全非同步。本文將嘗試透過執行REST API呼叫向您展示新API的基本用法,我們將使用openJDK 11。
新API使用java.util.concurrent.CompleteableFuture提供的非同步,非阻塞的請求/響應行為;新API為HTTP 1.1 / 2,WebSocket提供本機支援。
新API提供核心功能的核心類和介面包括:
HttpClient類, java.net.http.HttpClient
HttpRequest類, java.net.http.HttpRequest
HttpResponse介面, java.net.http.HttpResponse
WebSocket介面,java.net.http.WebSocket
在Java 11之前呼叫http:
使用Java 11呼叫http:
從語義上講,新API是2018年Java API所需的一切。首先,它是詳細的。其次,它是模組化的。第三,它遵循新的OOP方式連結(或使用構建器)來構造物件。第四,它和HTTP更自然。
API感覺更加原生於HTTP。命名方法名稱(如body()和headers())比getContent()和getHeaderField(),getHeaderKey()更適合。舊的API是抽象的,並且與通用網路相關,而不針對HTTP。
優於HttpURLConnection的優點:
1.改進了對HTTP,HTTP / 2的支援
2.原生HTTP感覺,HTTP是一流的公民
3.非同步,非阻塞實現
4.新的API,更自然地與現代語言功能
曾幾何時,使用Java SE(標準版)API執行常見的HTTP操作(如REST API呼叫)可能被描述為不自然且繁瑣。Java 11正式改變了這一點。
從Java 11開始,API現在完全非同步。本文將嘗試透過執行REST API呼叫向您展示新API的基本用法,我們將使用openJDK 11。
新API使用java.util.concurrent.CompleteableFuture提供的非同步,非阻塞的請求/響應行為;新API為HTTP 1.1 / 2,WebSocket提供本機支援。
新API提供核心功能的核心類和介面包括:
HttpClient類, java.net.http.HttpClient
HttpRequest類, java.net.http.HttpRequest
HttpResponse介面, java.net.http.HttpResponse
WebSocket介面,java.net.http.WebSocket
在Java 11之前呼叫http:
var HTTP_CLIENT= (HttpURLConnection) URI.create( new StringBuilder(API_ENDPOINT) .append("firstName=").append(args[0]) .append("&surname=").append(args[1]) .append("&season=").append(args[2]) .toString()) .toURL() .openConnection(); HTTP_CLIENT.setRequestMethod("GET"); var HTTP_RESPONSE = HTTP_CLIENT.getInputStream(); <p class="indent"> |
使用Java 11呼叫http:
var HTTP_REQUEST = HttpRequest.newBuilder() .uri(URI.create( //Set the appropriate endpoint new StringBuilder(API_ENDPOINT) .append("firstName=").append(args[0]) .append("&surname=").append(args[1]) .append("&season=").append(args[2]) .toString() ) ) .timeout(Duration.ofMinutes(1)) .header("Content-Type", "application/json") .build(); var HTTP_RESPONSE = HTTP_CLIENT.send(HTTP_REQUEST, asString); var statusCode = HTTP_RESPONSE.statusCode(); if (statusCode == 200 || statusCode == 201) System.out.println("Success! -- Java 11 REST API Call\n" + args[1] + ", " + args[0] + " [" + args[3] +"]\n" + HTTP_RESPONSE.body()); else System.out.println("Failure! -- Java 11 REST API Call"); <p class="indent"> |
從語義上講,新API是2018年Java API所需的一切。首先,它是詳細的。其次,它是模組化的。第三,它遵循新的OOP方式連結(或使用構建器)來構造物件。第四,它和HTTP更自然。
API感覺更加原生於HTTP。命名方法名稱(如body()和headers())比getContent()和getHeaderField(),getHeaderKey()更適合。舊的API是抽象的,並且與通用網路相關,而不針對HTTP。
優於HttpURLConnection的優點:
1.改進了對HTTP,HTTP / 2的支援
2.原生HTTP感覺,HTTP是一流的公民
3.非同步,非阻塞實現
4.新的API,更自然地與現代語言功能
相關文章
- java當中的批處理Java
- Java 中的並行處理Java並行
- Java中對時間的處理Java
- java中的垃圾處理機制Java
- java 請求HTTP返回json集合,物件處理方式JavaHTTPJSON物件
- Calendar類在Java中的應用與日期時間處理Java
- Java中的任務超時處理Java
- Java8中的時間處理Java
- Java 中的異常處理機制Java
- Java 異常處理:使用和思考Java
- mongoDB中聚合函式java處理MongoDB函式Java
- java中 檔案壓縮處理Java
- Java中的異常處理最佳實踐Java
- Java處理emojiJava
- websocket和http的區別WebHTTP
- java優雅的處理程式中的異常Java
- Java XML和JSON:Java SE的文件處理,第1部分JavaXMLJSON
- Java XML和JSON:Java SE的文件處理 第2部分JavaXMLJSON
- Java 異常處理中的種種細節!Java
- Java 中關於 null 物件的容錯處理JavaNull物件
- Java中的異常處理(隨堂筆記)Java筆記
- Java中處理SocketException: Connection reset”異常的方法JavaException
- Java中的並行流處理與效能提升Java並行
- java時間處理Java
- JAVA 異常處理Java
- Java 異常處理Java
- JAVA異常處理Java
- Java 處理Pdf尺寸Java
- 集合資料處理(C#、JavaScript 和 Java)C#JavaScript
- java處理流 和節點流(在位元組流和字元流中,又分為處理流和節點流)Java字元
- 用Java實現Stream流處理中的滑窗Java
- java 如何簡單快速處理 json 中的資料JavaJSON
- java 如何簡單快速處理 xml 中的資料JavaXML
- Java 8中處理集合的優雅姿勢——StreamJava
- 翻譯 | Java流中如何處理異常Java
- Java中如何處理空指標異常Java指標
- Java 的異常處理機制Java
- java異常的處理機制Java