forked from PacktPublishing/Java-Coding-Problems
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.java
More file actions
97 lines (74 loc) · 3.92 KB
/
Copy pathMain.java
File metadata and controls
97 lines (74 loc) · 3.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package modern.challenge;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.file.Files;
import java.nio.file.Path;
public class Main {
public static void main(String[] args) throws IOException, InterruptedException {
HttpClient client = HttpClient.newHttpClient();
// BodyPublishers.ofString() - create a String body
HttpRequest requestBodyOfString = HttpRequest.newBuilder()
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(
"{\"name\": \"morpheus\",\"job\": \"leader\"}"))
.uri(URI.create("https://reqres.in/api/users"))
.build();
HttpResponse<String> responseBodyOfString = client.send(
requestBodyOfString, HttpResponse.BodyHandlers.ofString());
System.out.println("BodyPublishers.ofString() | Status code: "
+ responseBodyOfString.statusCode());
System.out.println("BodyPublishers.ofString() | Body: "
+ responseBodyOfString.body());
System.out.println();
// BodyPublishers.ofInputStream() - create an input stream body
HttpRequest requestBodyOfInputStream = HttpRequest.newBuilder()
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofInputStream(() -> inputStream("user.json")))
.uri(URI.create("https://reqres.in/api/users"))
.build();
HttpResponse<String> responseBodyOfInputStream = client.send(
requestBodyOfInputStream, HttpResponse.BodyHandlers.ofString());
System.out.println("BodyPublishers.ofInputStream() | Status code: "
+ responseBodyOfInputStream.statusCode());
System.out.println("BodyPublishers.ofInputStream() | Body: "
+ responseBodyOfInputStream.body());
System.out.println();
// BodyPublishers.ofByteArray() - create an byte array body
HttpRequest requestBodyOfByteArray = HttpRequest.newBuilder()
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofByteArray(Files.readAllBytes(Path.of("user.json"))))
.uri(URI.create("https://reqres.in/api/users"))
.build();
HttpResponse<String> responseBodyOfByteArrays = client.send(
requestBodyOfByteArray, HttpResponse.BodyHandlers.ofString());
System.out.println("BodyPublishers.ofByteArray() | Status code: "
+ responseBodyOfByteArrays.statusCode());
System.out.println("BodyPublishers.ofByteArray() | Body: "
+ responseBodyOfByteArrays.body());
System.out.println();
// BodyPublishers.ofFile() - create a body from a file
HttpRequest requestBodyOfFile = HttpRequest.newBuilder()
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofFile(Path.of("user.json")))
.uri(URI.create("https://reqres.in/api/users"))
.build();
HttpResponse<String> responseBodyOfFile = client.send(
requestBodyOfFile, HttpResponse.BodyHandlers.ofString());
System.out.println("BodyPublishers.ofFile() | Status code: "
+ responseBodyOfFile.statusCode());
System.out.println("BodyPublishers.ofFile() | Body: "
+ responseBodyOfFile.body());
}
private static ByteArrayInputStream inputStream(String fileName) {
try ( ByteArrayInputStream inputStream = new ByteArrayInputStream(
Files.readAllBytes(Path.of(fileName)))) {
return inputStream;
} catch (IOException ex) {
throw new RuntimeException("File could not be read: ", ex);
}
}
}