Spring 中的Http请求工具
RestTemplate
@Test
public void restTemplateTest() {
ResponseEntity<String> resp = new RestTemplate()
.getForEntity(url, String.class);
if (resp.getStatusCode() == HttpStatus.OK) {
System.out.println("AsyncRestTemplate响应为: " + resp.getBody());
}
}
AsyncRestTemplate @Deprecated
@Test
public void asyncRestTemplateTest() throws InterruptedException {
new AsyncRestTemplate()
.getForEntity(url, String.class)
.addCallback(
new ListenableFutureCallback<ResponseEntity<String>>() {
@Override
public void onFailure(Throwable ex) {
}
@Override
public void onSuccess(ResponseEntity<String> result) {
if (result.getStatusCode() == HttpStatus.OK) {
System.out.println("AsyncRestTemplate响应为: " + result.getBody());
}
}
}
);
System.out.println(1);
Thread.sleep(3000);
System.out.println(2);
}
RestTemplate To Sync
@Test
public void monoRestTemplate() throws InterruptedException {
//同步阻塞
// Mono.fromCallable(() -> new RestTemplate()
// .getForObject(url, String.class))
// .subscribe(res -> {
// System.out.println("monoRestTemplate响应为: " + res);
// });
//异步通知
Mono.fromCallable(() -> new RestTemplate()
.getForObject(url, String.class))
.subscribeOn(Schedulers.elastic())
.subscribe(res -> {
System.out.println("monoRestTemplate响应为: " + res);
});
System.out.println("1");
Thread.sleep(3000);
System.out.println("2");
}
WebClient
@Test
public void webClient() throws InterruptedException {
Mono<String> resp = WebClient
.builder()
.build()
.get()
.uri(url)
.retrieve()
.bodyToMono(String.class);
resp.subscribe(
s -> {
System.out.println("响应1为: " + s);
}
);
WebClient
.builder()
.build()
.get()
.uri(url)
.exchange()
.subscribe(response -> {
if (response.statusCode() == HttpStatus.OK) {
response.bodyToMono(String.class).subscribe(
result -> {
System.out.println("响应2为: " + result);
}
);
}
});
Thread.sleep(3333);
}