[BAEL-9555] - Created a core-java-modules folder
This commit is contained in:
Binary file not shown.
@@ -12,6 +12,7 @@
|
|||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
<artifactId>parent-modules</artifactId>
|
<artifactId>parent-modules</artifactId>
|
||||||
<version>1.0.0-SNAPSHOT</version>
|
<version>1.0.0-SNAPSHOT</version>
|
||||||
|
<relativePath>../../</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
<artifactId>parent-modules</artifactId>
|
<artifactId>parent-modules</artifactId>
|
||||||
<version>1.0.0-SNAPSHOT</version>
|
<version>1.0.0-SNAPSHOT</version>
|
||||||
|
<relativePath>../../</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
Executable → Regular
+132
-132
@@ -1,132 +1,132 @@
|
|||||||
/*
|
/*
|
||||||
* To change this license header, choose License Headers in Project Properties.
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
* To change this template file, choose Tools | Templates
|
* To change this template file, choose Tools | Templates
|
||||||
* and open the template in the editor.
|
* and open the template in the editor.
|
||||||
*/
|
*/
|
||||||
package com.baeldung.java11.httpclient;
|
package com.baeldung.java11.httpclient;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.net.http.HttpClient;
|
import java.net.http.HttpClient;
|
||||||
import java.net.http.HttpClient.Version;
|
import java.net.http.HttpClient.Version;
|
||||||
import java.net.http.HttpRequest;
|
import java.net.http.HttpRequest;
|
||||||
import java.net.http.HttpRequest.BodyPublishers;
|
import java.net.http.HttpRequest.BodyPublishers;
|
||||||
import java.net.http.HttpResponse;
|
import java.net.http.HttpResponse;
|
||||||
import java.net.http.HttpResponse.BodyHandlers;
|
import java.net.http.HttpResponse.BodyHandlers;
|
||||||
import java.net.http.HttpResponse.PushPromiseHandler;
|
import java.net.http.HttpResponse.PushPromiseHandler;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class HttpClientExample {
|
public class HttpClientExample {
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
httpGetRequest();
|
httpGetRequest();
|
||||||
httpPostRequest();
|
httpPostRequest();
|
||||||
asynchronousGetRequest();
|
asynchronousGetRequest();
|
||||||
asynchronousMultipleRequests();
|
asynchronousMultipleRequests();
|
||||||
pushRequest();
|
pushRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void httpGetRequest() throws URISyntaxException, IOException, InterruptedException {
|
public static void httpGetRequest() throws URISyntaxException, IOException, InterruptedException {
|
||||||
HttpClient client = HttpClient.newHttpClient();
|
HttpClient client = HttpClient.newHttpClient();
|
||||||
HttpRequest request = HttpRequest.newBuilder()
|
HttpRequest request = HttpRequest.newBuilder()
|
||||||
.version(HttpClient.Version.HTTP_2)
|
.version(HttpClient.Version.HTTP_2)
|
||||||
.uri(URI.create("http://jsonplaceholder.typicode.com/posts/1"))
|
.uri(URI.create("http://jsonplaceholder.typicode.com/posts/1"))
|
||||||
.headers("Accept-Enconding", "gzip, deflate")
|
.headers("Accept-Enconding", "gzip, deflate")
|
||||||
.build();
|
.build();
|
||||||
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
|
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
|
||||||
|
|
||||||
String responseBody = response.body();
|
String responseBody = response.body();
|
||||||
int responseStatusCode = response.statusCode();
|
int responseStatusCode = response.statusCode();
|
||||||
|
|
||||||
System.out.println("httpGetRequest: " + responseBody);
|
System.out.println("httpGetRequest: " + responseBody);
|
||||||
System.out.println("httpGetRequest status code: " + responseStatusCode);
|
System.out.println("httpGetRequest status code: " + responseStatusCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void httpPostRequest() throws URISyntaxException, IOException, InterruptedException {
|
public static void httpPostRequest() throws URISyntaxException, IOException, InterruptedException {
|
||||||
HttpClient client = HttpClient.newBuilder()
|
HttpClient client = HttpClient.newBuilder()
|
||||||
.version(HttpClient.Version.HTTP_2)
|
.version(HttpClient.Version.HTTP_2)
|
||||||
.build();
|
.build();
|
||||||
HttpRequest request = HttpRequest.newBuilder(new URI("http://jsonplaceholder.typicode.com/posts"))
|
HttpRequest request = HttpRequest.newBuilder(new URI("http://jsonplaceholder.typicode.com/posts"))
|
||||||
.version(HttpClient.Version.HTTP_2)
|
.version(HttpClient.Version.HTTP_2)
|
||||||
.POST(BodyPublishers.ofString("Sample Post Request"))
|
.POST(BodyPublishers.ofString("Sample Post Request"))
|
||||||
.build();
|
.build();
|
||||||
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
|
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
|
||||||
String responseBody = response.body();
|
String responseBody = response.body();
|
||||||
System.out.println("httpPostRequest : " + responseBody);
|
System.out.println("httpPostRequest : " + responseBody);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void asynchronousGetRequest() throws URISyntaxException {
|
public static void asynchronousGetRequest() throws URISyntaxException {
|
||||||
HttpClient client = HttpClient.newHttpClient();
|
HttpClient client = HttpClient.newHttpClient();
|
||||||
URI httpURI = new URI("http://jsonplaceholder.typicode.com/posts/1");
|
URI httpURI = new URI("http://jsonplaceholder.typicode.com/posts/1");
|
||||||
HttpRequest request = HttpRequest.newBuilder(httpURI)
|
HttpRequest request = HttpRequest.newBuilder(httpURI)
|
||||||
.version(HttpClient.Version.HTTP_2)
|
.version(HttpClient.Version.HTTP_2)
|
||||||
.build();
|
.build();
|
||||||
CompletableFuture<Void> futureResponse = client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
|
CompletableFuture<Void> futureResponse = client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
|
||||||
.thenAccept(resp -> {
|
.thenAccept(resp -> {
|
||||||
System.out.println("Got pushed response " + resp.uri());
|
System.out.println("Got pushed response " + resp.uri());
|
||||||
System.out.println("Response statuscode: " + resp.statusCode());
|
System.out.println("Response statuscode: " + resp.statusCode());
|
||||||
System.out.println("Response body: " + resp.body());
|
System.out.println("Response body: " + resp.body());
|
||||||
});
|
});
|
||||||
System.out.println("futureResponse" + futureResponse);
|
System.out.println("futureResponse" + futureResponse);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void asynchronousMultipleRequests() throws URISyntaxException {
|
public static void asynchronousMultipleRequests() throws URISyntaxException {
|
||||||
HttpClient client = HttpClient.newHttpClient();
|
HttpClient client = HttpClient.newHttpClient();
|
||||||
List<URI> uris = Arrays.asList(new URI("http://jsonplaceholder.typicode.com/posts/1"), new URI("http://jsonplaceholder.typicode.com/posts/2"));
|
List<URI> uris = Arrays.asList(new URI("http://jsonplaceholder.typicode.com/posts/1"), new URI("http://jsonplaceholder.typicode.com/posts/2"));
|
||||||
List<HttpRequest> requests = uris.stream()
|
List<HttpRequest> requests = uris.stream()
|
||||||
.map(HttpRequest::newBuilder)
|
.map(HttpRequest::newBuilder)
|
||||||
.map(reqBuilder -> reqBuilder.build())
|
.map(reqBuilder -> reqBuilder.build())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
System.out.println("Got pushed response1 " + requests);
|
System.out.println("Got pushed response1 " + requests);
|
||||||
CompletableFuture.allOf(requests.stream()
|
CompletableFuture.allOf(requests.stream()
|
||||||
.map(request -> client.sendAsync(request, BodyHandlers.ofString()))
|
.map(request -> client.sendAsync(request, BodyHandlers.ofString()))
|
||||||
.toArray(CompletableFuture<?>[]::new))
|
.toArray(CompletableFuture<?>[]::new))
|
||||||
.thenAccept(System.out::println)
|
.thenAccept(System.out::println)
|
||||||
.join();
|
.join();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void pushRequest() throws URISyntaxException, InterruptedException {
|
public static void pushRequest() throws URISyntaxException, InterruptedException {
|
||||||
System.out.println("Running HTTP/2 Server Push example...");
|
System.out.println("Running HTTP/2 Server Push example...");
|
||||||
|
|
||||||
HttpClient httpClient = HttpClient.newBuilder()
|
HttpClient httpClient = HttpClient.newBuilder()
|
||||||
.version(Version.HTTP_2)
|
.version(Version.HTTP_2)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
HttpRequest pageRequest = HttpRequest.newBuilder()
|
HttpRequest pageRequest = HttpRequest.newBuilder()
|
||||||
.uri(URI.create("https://http2.golang.org/serverpush"))
|
.uri(URI.create("https://http2.golang.org/serverpush"))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
// Interface HttpResponse.PushPromiseHandler<T>
|
// Interface HttpResponse.PushPromiseHandler<T>
|
||||||
// void applyPushPromise(HttpRequest initiatingRequest, HttpRequest pushPromiseRequest, Function<HttpResponse.BodyHandler<T>,CompletableFuture<HttpResponse<T>>> acceptor)
|
// void applyPushPromise(HttpRequest initiatingRequest, HttpRequest pushPromiseRequest, Function<HttpResponse.BodyHandler<T>,CompletableFuture<HttpResponse<T>>> acceptor)
|
||||||
httpClient.sendAsync(pageRequest, BodyHandlers.ofString(), pushPromiseHandler())
|
httpClient.sendAsync(pageRequest, BodyHandlers.ofString(), pushPromiseHandler())
|
||||||
.thenAccept(pageResponse -> {
|
.thenAccept(pageResponse -> {
|
||||||
System.out.println("Page response status code: " + pageResponse.statusCode());
|
System.out.println("Page response status code: " + pageResponse.statusCode());
|
||||||
System.out.println("Page response headers: " + pageResponse.headers());
|
System.out.println("Page response headers: " + pageResponse.headers());
|
||||||
String responseBody = pageResponse.body();
|
String responseBody = pageResponse.body();
|
||||||
System.out.println(responseBody);
|
System.out.println(responseBody);
|
||||||
}).join();
|
}).join();
|
||||||
|
|
||||||
Thread.sleep(1000); // waiting for full response
|
Thread.sleep(1000); // waiting for full response
|
||||||
}
|
}
|
||||||
|
|
||||||
private static PushPromiseHandler<String> pushPromiseHandler() {
|
private static PushPromiseHandler<String> pushPromiseHandler() {
|
||||||
return (HttpRequest initiatingRequest,
|
return (HttpRequest initiatingRequest,
|
||||||
HttpRequest pushPromiseRequest,
|
HttpRequest pushPromiseRequest,
|
||||||
Function<HttpResponse.BodyHandler<String>,
|
Function<HttpResponse.BodyHandler<String>,
|
||||||
CompletableFuture<HttpResponse<String>>> acceptor) -> {
|
CompletableFuture<HttpResponse<String>>> acceptor) -> {
|
||||||
acceptor.apply(BodyHandlers.ofString())
|
acceptor.apply(BodyHandlers.ofString())
|
||||||
.thenAccept(resp -> {
|
.thenAccept(resp -> {
|
||||||
System.out.println(" Pushed response: " + resp.uri() + ", headers: " + resp.headers());
|
System.out.println(" Pushed response: " + resp.uri() + ", headers: " + resp.headers());
|
||||||
});
|
});
|
||||||
System.out.println("Promise request: " + pushPromiseRequest.uri());
|
System.out.println("Promise request: " + pushPromiseRequest.uri());
|
||||||
System.out.println("Promise request: " + pushPromiseRequest.headers());
|
System.out.println("Promise request: " + pushPromiseRequest.headers());
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+240
-240
File diff suppressed because it is too large
Load Diff
+168
-168
File diff suppressed because it is too large
Load Diff
+54
-54
@@ -1,54 +1,54 @@
|
|||||||
package com.baeldung.java11.httpclient.test;
|
package com.baeldung.java11.httpclient.test;
|
||||||
|
|
||||||
import static org.hamcrest.CoreMatchers.equalTo;
|
import static org.hamcrest.CoreMatchers.equalTo;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.junit.Assert.assertThat;
|
import static org.junit.Assert.assertThat;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.net.http.HttpClient;
|
import java.net.http.HttpClient;
|
||||||
import java.net.http.HttpRequest;
|
import java.net.http.HttpRequest;
|
||||||
import java.net.http.HttpResponse;
|
import java.net.http.HttpResponse;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
public class HttpResponseTest {
|
public class HttpResponseTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldReturnStatusOKWhenSendGetRequest() throws IOException, InterruptedException, URISyntaxException {
|
public void shouldReturnStatusOKWhenSendGetRequest() throws IOException, InterruptedException, URISyntaxException {
|
||||||
HttpRequest request = HttpRequest.newBuilder()
|
HttpRequest request = HttpRequest.newBuilder()
|
||||||
.uri(new URI("https://postman-echo.com/get"))
|
.uri(new URI("https://postman-echo.com/get"))
|
||||||
.version(HttpClient.Version.HTTP_2)
|
.version(HttpClient.Version.HTTP_2)
|
||||||
.GET()
|
.GET()
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
HttpResponse<String> response = HttpClient.newBuilder()
|
HttpResponse<String> response = HttpClient.newBuilder()
|
||||||
.followRedirects(HttpClient.Redirect.NORMAL)
|
.followRedirects(HttpClient.Redirect.NORMAL)
|
||||||
.build()
|
.build()
|
||||||
.send(request, HttpResponse.BodyHandlers.ofString());
|
.send(request, HttpResponse.BodyHandlers.ofString());
|
||||||
|
|
||||||
assertThat(response.statusCode(), equalTo(HttpURLConnection.HTTP_OK));
|
assertThat(response.statusCode(), equalTo(HttpURLConnection.HTTP_OK));
|
||||||
assertNotNull(response.body());
|
assertNotNull(response.body());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldResponseURIDifferentThanRequestUIRWhenRedirect() throws IOException, InterruptedException, URISyntaxException {
|
public void shouldResponseURIDifferentThanRequestUIRWhenRedirect() throws IOException, InterruptedException, URISyntaxException {
|
||||||
HttpRequest request = HttpRequest.newBuilder()
|
HttpRequest request = HttpRequest.newBuilder()
|
||||||
.uri(new URI("http://stackoverflow.com"))
|
.uri(new URI("http://stackoverflow.com"))
|
||||||
.version(HttpClient.Version.HTTP_2)
|
.version(HttpClient.Version.HTTP_2)
|
||||||
.GET()
|
.GET()
|
||||||
.build();
|
.build();
|
||||||
HttpResponse<String> response = HttpClient.newBuilder()
|
HttpResponse<String> response = HttpClient.newBuilder()
|
||||||
.followRedirects(HttpClient.Redirect.NORMAL)
|
.followRedirects(HttpClient.Redirect.NORMAL)
|
||||||
.build()
|
.build()
|
||||||
.send(request, HttpResponse.BodyHandlers.ofString());
|
.send(request, HttpResponse.BodyHandlers.ofString());
|
||||||
|
|
||||||
assertThat(request.uri()
|
assertThat(request.uri()
|
||||||
.toString(), equalTo("http://stackoverflow.com"));
|
.toString(), equalTo("http://stackoverflow.com"));
|
||||||
assertThat(response.uri()
|
assertThat(response.uri()
|
||||||
.toString(), equalTo("https://stackoverflow.com/"));
|
.toString(), equalTo("https://stackoverflow.com/"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -14,6 +14,7 @@
|
|||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
<artifactId>parent-modules</artifactId>
|
<artifactId>parent-modules</artifactId>
|
||||||
<version>1.0.0-SNAPSHOT</version>
|
<version>1.0.0-SNAPSHOT</version>
|
||||||
|
<relativePath>../../</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user