forked from paulorievrs/java4noobs
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRequestJava.java
More file actions
67 lines (60 loc) · 3.3 KB
/
RequestJava.java
File metadata and controls
67 lines (60 loc) · 3.3 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
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
public class RequestJava {
public static void fazerRequisicao(String urlPath) throws IOException {
URL url = new URL(urlPath);
//Instancia um objeto URL e insere a URL
HttpURLConnection conexao = (HttpURLConnection) url.openConnection();
//Cria uma variável HttpURLConnection que será responsável por fazer a requisição HTTP
conexao.setRequestMethod("GET"); //Seleciona qual o tipo do método a ser utilizado
conexao.connect(); //Inicia a requisição
imprimirResposta(conexao); //Função para imprimir a resposta da requisição
}
public static void fazerRequisicao(String urlPath, String metodo, Map<String, ?> requestBody) throws IOException {
URL url = new URL(urlPath);
//Instancia um objeto URL e insere a URL
HttpURLConnection conexao = (HttpURLConnection) url.openConnection();
//Cria uma variável HttpURLConnection que será responsável por fazer a requisição HTTP
conexao.setRequestMethod(metodo); //Seleciona qual o tipo do método a ser utilizado
if (Objects.nonNull(requestBody)) { //Se a função receber algum corpo para a requisição, o mesmo é inserido
conexao.setDoOutput(true); //Necessário para poder enviar um corpo na requisição
try (PrintWriter escritor = new PrintWriter(conexao.getOutputStream())) {
requestBody.forEach((chave, valor) -> escritor.print(chave + "=" + valor + "&"));
//Escreve o conteúdo do corpo na requisição com uma expressão lambda
}
}
conexao.connect(); //Inicia a requisição
imprimirResposta(conexao); //Função para imprimir a resposta da requisição
}
public static void imprimirResposta(HttpURLConnection conexao) throws IOException {
StringBuilder conteudo = new StringBuilder(); //Cria um StringBuilder para armazenar o corpo da resposta
try (BufferedReader leitor = new BufferedReader(new InputStreamReader(conexao.getInputStream()))) {
String linha;
while ((linha = leitor.readLine()) != null) {
conteudo.append(linha); //Armazena cada linha da resposta no StringBuilder
}
}
System.out.println("Código de resposta:");
System.out.println(conexao.getResponseCode());
System.out.println("Conteúdo da resposta:");
System.out.println(conteudo.toString());
System.out.println("Headers da resposta:");
conexao.getHeaderFields().forEach((headerKey, headerValue) -> System.out.println(headerKey + ": " + headerValue));
//Expressão lambda para imprimir os campos do header
}
public static void main(String[] args) throws IOException {
fazerRequisicao("https://jsonplaceholder.typicode.com/todos/1"); // GET
Map<String, Object> requestBody = new HashMap<>();
requestBody.put("title", "titulo");
requestBody.put("body", "corpo");
requestBody.put("userId", 999);
fazerRequisicao("https://jsonplaceholder.typicode.com/todos/", "POST", requestBody);
}
}