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並行
- 使用Jackson在Java中處理JSONJavaJSON
- java中的垃圾處理機制Java
- Java中對時間的處理Java
- Calendar類在Java中的應用與日期時間處理Java
- Java8中的時間處理Java
- Java 中的異常處理機制Java
- Java中的任務超時處理Java
- 使用JAXB處理JAVA和XMLJavaXML
- java中 檔案壓縮處理Java
- mongoDB中聚合函式java處理MongoDB函式Java
- websocket和http的區別WebHTTP
- java 請求HTTP返回json集合,物件處理方式JavaHTTPJSON物件
- Java中的異常處理最佳實踐Java
- Java 異常處理:使用和思考Java
- Sun如何處理PostgreSQL和Java DB?SQLJava
- Java異常處理和設計Java
- (Java)字串處理--equals()和equalsIgnoreCase()Java字串
- 使用IBM Rational Software Architect 在Java中處理XSDIBMJava
- java優雅的處理程式中的異常Java
- Java處理emojiJava
- java(日期處理)Java
- java事務的處理Java
- 在java中“equals”和“==”的區別Java
- Java 異常處理中的種種細節!Java
- Java 中關於 null 物件的容錯處理JavaNull物件
- Java中的異常處理(隨堂筆記)Java筆記
- Java中的並行流處理與效能提升Java並行
- java中大數處理和高精度小數處理(so easy)Java
- JavaScript 處理WebSocket的超時JavaScriptWeb
- Java-WebSocketJavaWeb
- 條款 11:在 operator= 中處理“自我賦值”賦值
- java時間處理Java
- Java 處理Pdf尺寸Java
- JAVA 異常處理Java