[BAEL-9555] - Created a core-java-modules folder

This commit is contained in:
amit2103
2019-05-05 17:22:09 +05:30
parent 8b63b0d90a
commit 3bae5e5334
1480 changed files with 25600 additions and 5594 deletions
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>
@@ -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());
}; };
} }
} }
@@ -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