Skip to content

Commit 48e2960

Browse files
committed
Java 9 HTTP 2 Client API Example
1 parent f1af0bd commit 48e2960

File tree

4 files changed

+116
-11
lines changed

4 files changed

+116
-11
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ Find more detail at:
1515
* [Create Immutable Lists In Java 9 By Static Factory Methods](https://howtoprogram.xyz/2017/09/24/java-9-create-immutable-lists-static-factory-method/)
1616
* [Java 9 Example With Maven And JUnit 5](https://howtoprogram.xyz/2017/09/23/java-9-maven-junit-5-example/)
1717
* [Copy Streams In Java 9 With The InputStream.transferTo() Method](https://howtoprogram.xyz/2017/10/01/java-9-inputstream-transferto-copy-streams/)
18-
18+
* [Java 9 HTTP 2 Client API Example](https://howtoprogram.xyz/2017/10/19/java-9-http-2-client-api-example/)

java9-language-features-examples/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ Demonstration for:
1010

1111
[Streams API Updates In Java 9](https://howtoprogram.xyz/2017/10/12/java-9-streams-api-updates/)
1212

13+
[Java 9 HTTP 2 Client API Example](https://howtoprogram.xyz/2017/10/19/java-9-http-2-client-api-example/)
14+
15+
16+
1317
## Prerequisites:
1418
* Maven >= 3.3.1
1519
* JDK 9

java9-language-features-examples/src/test/java/com/howtoprogram/java9ex/Java9HTTP2ClientTest.java

Lines changed: 102 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,59 +4,114 @@
44
import jdk.incubator.http.HttpClient;
55
import jdk.incubator.http.HttpRequest;
66
import jdk.incubator.http.HttpResponse;
7+
import jdk.incubator.http.HttpTimeoutException;
78
import org.junit.jupiter.api.Test;
89

10+
import java.io.File;
911
import java.net.Authenticator;
1012
import java.net.PasswordAuthentication;
13+
import java.net.ProxySelector;
1114
import java.net.URI;
15+
import java.time.Duration;
1216
import java.util.concurrent.CompletableFuture;
1317
import java.util.concurrent.TimeUnit;
1418

1519
import static org.junit.jupiter.api.Assertions.assertEquals;
20+
import static org.junit.jupiter.api.Assertions.assertThrows;
1621

1722
public class Java9HTTP2ClientTest {
1823

19-
public void dosth() {
20-
HttpClient defaultClient = HttpClient.newHttpClient();
24+
25+
@Test
26+
public void synchronousGetTest() throws Exception {
27+
28+
HttpClient client = HttpClient.newHttpClient();
29+
30+
HttpRequest request = HttpRequest.newBuilder()
31+
.uri(new URI("https://publicobject.com/helloworld.txt"))
32+
.GET()
33+
.build();
34+
35+
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandler.asString());
36+
assertEquals(200, response.statusCode());
37+
38+
}
39+
40+
@Test
41+
public void basicAuthGetTest() throws Exception {
2142

2243
HttpClient client = HttpClient.newBuilder()
23-
.version(HttpClient.Version.HTTP_2)
44+
.version(HttpClient.Version.HTTP_1_1)
2445
.authenticator(new Authenticator() {
2546
@Override
2647
protected PasswordAuthentication getPasswordAuthentication() {
27-
return new PasswordAuthentication("username", "password".toCharArray());
48+
return new PasswordAuthentication("user", "passwd".toCharArray());
2849
}
2950
})
3051
.build();
52+
53+
HttpRequest request = HttpRequest.newBuilder()
54+
.uri(new URI("http://httpbin.org/basic-auth/user/passwd"))
55+
.GET()
56+
.build();
57+
58+
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandler.asString());
59+
assertEquals(200, response.statusCode());
60+
3161
}
3262

3363
@Test
34-
public void synchronousGetTest() throws Exception {
64+
public void basicPostTest() throws Exception {
3565

3666
HttpClient client = HttpClient.newHttpClient();
3767

3868
HttpRequest request = HttpRequest.newBuilder()
39-
.uri(new URI("https://publicobject.com/helloworld.txt"))
40-
.GET()
69+
.uri(new URI("http://httpbin.org/post")).POST(
70+
HttpRequest.BodyProcessor.fromString("param1=foo,param2=bar"))
71+
.version(HttpClient.Version.HTTP_1_1)
4172
.build();
4273

4374
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandler.asString());
4475
assertEquals(200, response.statusCode());
76+
System.out.println(response.body());
4577

4678
}
4779

4880
@Test
49-
public void getWithQueryParametersTest() throws Exception {
81+
public void postByteArrayTest() throws Exception {
5082

5183
HttpClient client = HttpClient.newHttpClient();
84+
byte[] body = "Java 9 HTTP 2 Client API Example".getBytes();
5285

5386
HttpRequest request = HttpRequest.newBuilder()
54-
.uri(new URI("https://publicobject.com/helloworld.txt"))
55-
.GET()
87+
.uri(new URI("http://httpbin.org/post")).POST(
88+
HttpRequest.BodyProcessor.fromByteArray(body))
89+
.version(HttpClient.Version.HTTP_1_1)
5690
.build();
5791

5892
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandler.asString());
5993
assertEquals(200, response.statusCode());
94+
System.out.println(response.body());
95+
96+
}
97+
98+
99+
@Test
100+
public void uploadFileTest() throws Exception {
101+
102+
HttpClient client = HttpClient.newHttpClient();
103+
104+
File file = new File("src/test/resources/LoremIpsum.txt");
105+
106+
HttpRequest request = HttpRequest.newBuilder()
107+
.uri(new URI("http://httpbin.org/post")).POST(
108+
HttpRequest.BodyProcessor.fromFile(file.toPath()))
109+
.version(HttpClient.Version.HTTP_1_1)
110+
.build();
111+
112+
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandler.asString());
113+
assertEquals(200, response.statusCode());
114+
System.out.println(response.body());
60115

61116
}
62117

@@ -75,5 +130,42 @@ public void asynchronousGetTest() throws Exception {
75130
HttpResponse<String> actualResponse = response.get(1000, TimeUnit.MINUTES);
76131
assertEquals(200, actualResponse.statusCode());
77132

133+
134+
}
135+
136+
@Test
137+
public void setTimeoutTest() throws Exception {
138+
139+
HttpClient client = HttpClient.newHttpClient();
140+
141+
int delay = 10; //seconds
142+
143+
HttpRequest request = HttpRequest.newBuilder()
144+
.uri(new URI("http://httpbin.org/delay/" + delay))
145+
.version(HttpClient.Version.HTTP_1_1)
146+
.GET()
147+
.timeout(Duration.ofSeconds(delay - 5))
148+
.build();
149+
150+
assertThrows(HttpTimeoutException.class, () -> {
151+
152+
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandler.asString());
153+
154+
});
155+
}
156+
@Test
157+
public void setProxyTest() throws Exception {
158+
159+
HttpClient client = HttpClient.newBuilder()
160+
.proxy(ProxySelector.getDefault())
161+
.build();
162+
163+
HttpRequest request = HttpRequest.newBuilder()
164+
.uri(new URI("https://publicobject.com/helloworld.txt"))
165+
.GET()
166+
.build();
167+
168+
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandler.asString());
169+
assertEquals(200, response.statusCode());
78170
}
79171
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum at condimentum quam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nunc eu faucibus dui, ut fringilla enim. Vestibulum nec leo mauris. Pellentesque a augue orci. Integer nibh lectus, varius a iaculis non, pharetra vel ipsum. Nullam ornare lectus non ex dictum, tempus vulputate ligula gravida. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed congue nunc sit amet magna malesuada, non congue dolor tincidunt. Fusce a interdum nisi. Nam porttitor non est sed consequat. Integer in nisi porta mauris efficitur rhoncus. Duis ac tortor vitae tortor mollis cursus ut in massa. In commodo, augue efficitur tempor feugiat, justo lorem blandit diam, eget rhoncus dolor augue non turpis.
2+
3+
Curabitur sagittis risus vitae laoreet bibendum. Sed sagittis ultrices posuere. Phasellus sed neque non diam tempus ultricies. Praesent imperdiet feugiat porttitor. Mauris leo est, elementum nec purus nec, posuere malesuada nisi. Nunc porttitor porttitor purus quis feugiat. Praesent sodales placerat nunc ac elementum. In porttitor lectus a sapien consectetur malesuada vitae quis metus. Nulla facilisi.
4+
5+
Nullam sem erat, aliquet sit amet sem ac, condimentum malesuada lacus. Quisque iaculis placerat augue eu efficitur. Aliquam placerat ultricies dignissim. Maecenas fermentum ullamcorper tempor. In hac habitasse platea dictumst. Etiam interdum augue at metus sollicitudin egestas. Phasellus non ante ut lacus aliquam viverra at ut nisl. Ut interdum elementum neque non scelerisque. Duis bibendum dignissim leo, ac facilisis elit convallis auctor. Vivamus accumsan venenatis lacus, elementum luctus ligula pellentesque at. Vestibulum magna justo, sodales ut placerat id, laoreet tincidunt ante. Cras ut purus quam. Vestibulum nulla magna, congue at est vel, tempor tristique orci. Quisque elementum, ex sit amet elementum rutrum, quam purus pretium metus, commodo sodales tortor mauris sit amet ipsum.
6+
7+
Nulla et egestas lorem. Aenean congue neque quis orci pharetra, maximus blandit ipsum posuere. Quisque efficitur pellentesque risus, at commodo est tempor nec. Maecenas aliquet magna ac arcu mattis, sed ullamcorper enim imperdiet. Praesent laoreet et est nec venenatis. Pellentesque sit amet odio massa. Sed semper fringilla lobortis.
8+
9+
Pellentesque rutrum libero nisl, ac ornare orci placerat in. In hac habitasse platea dictumst. Donec congue rutrum nunc at viverra. Pellentesque ut faucibus nisl. Aenean quis urna sed nunc efficitur hendrerit. Etiam risus lorem, rutrum sed sem ac, mollis varius metus. Praesent commodo nunc eros, nec malesuada dui aliquam ac. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eu fermentum metus. Sed suscipit vel felis quis venenatis. Praesent non dapibus nisi. Phasellus luctus ultrices blandit. Maecenas ac eros faucibus, vestibulum mauris sit amet, eleifend nunc. Integer blandit orci orci, id viverra tellus finibus vel. Maecenas faucibus luctus ipsum non facilisis.

0 commit comments

Comments
 (0)