
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的动机保持一致 。