HttpClient的Get方法使用(异步)
HttpClient的Get方法使用(同步)
import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.util.concurrent.CompletableFuture; /** * 标准HTTP客户端 */ public class HttpClientExample { /** * 同步Get方法 * @param uri * @throws Exception */ private static void synGet(String uri) throws Exception { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder().uri( URI.create(uri)).build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); System.out.println(response.body()); } /** * 异步Get方法 * @param uri * @throws Exception */ private static void asyncGet(String uri) throws Exception { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder().uri( URI.create(uri)).build(); CompletableFuture<HttpResponse<String>> future = client.sendAsync(request,HttpResponse.BodyHandlers.ofString()); future.whenComplete((resp,ex)->{ if (ex!=null){ ex.printStackTrace(); }else { System.out.println(resp.statusCode()); System.out.println(resp.body()); } }).join(); } public static void main(String[] args) throws Exception { String uri = "http://t.weather.sojson.com/api/weather/city/101030100"; //synGet(uri); asyncGet(uri); } }
jdk11标准的http请求,可以不用依赖第三方的http工具包
http://openjdk.java.net/jeps/321
通过JEP 110标准化JDK 9中引入的孵化 HTTP客户端API ,并在JDK 10中进行更新。
考虑孵化的API收到的反馈,
在java.net.http
包中提供基于孵育的API 的标准化 API,和
删除孵化的API。
这个JEP的动机与JEP 110的动机保持一致 。