Todos os posts

Anatomia de uma Requisição Web

23/04/2026 22 views

Compreenda a fundo os protocolos, os verbos de comunicação e como o C# executa chamadas de rede na prática.

O que é uma Requisição HTTP/HTTPS?

Uma requisição é essencialmente uma mensagem enviada por um cliente (como seu navegador ou um app em C#) para um servidor, pedindo alguma ação (ler dados, salvar, deletar). O servidor processa e devolve uma "Resposta".

🌐HTTP

Hypertext Transfer Protocol

É o protocolo base da internet. Ele define as regras de como as mensagens são formatadas e transmitidas. O problema: os dados viajam em "texto puro". Se alguém interceptar a conexão (ataque Man-in-the-Middle), poderá ler tudo, incluindo senhas.

Padrão Atual

🔒HTTPS

HTTP Secure (com TLS/SSL)

É o próprio HTTP, mas envelopado em uma camada de criptografia. Os dados são embaralhados antes de sair do cliente e só podem ser desembaralhados pelo servidor destino. Garante confidencialidade e integridade.

O Dicionário da Web: Verbos HTTP

Quando fazemos uma requisição, informamos um "Verbo" (ou Método) para dizer ao servidor exatamente qual é a nossa intenção.

Dissecando o Código (ViaCEP)

Abaixo está a explicação linha a linha do código C# que você forneceu para consultar CEPs. A requisição utiliza o verbo GET (pois apenas lemos os dados da API pública do ViaCEP).

Exemplo de código consumindo a API ViaCEP

viacep_exemplo.cs
using System;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;

// Modelo de dados para receber o JSON do ViaCEP
public class Endereco
{
    public string Cep { get; set; }
    public string Logradouro { get; set; }
    public string Complemento { get; set; }
    public string Bairro { get; set; }
    public string Localidade { get; set; }
    public string Uf { get; set; }
}

class Program
{
    static async Task Main()
    {
        string cep = "01001000";
        string url = $"https://viacep.com.br/ws/{cep}/json/";

        using HttpClient client = new HttpClient();

        try
        {
            Endereco endereco = await client.GetFromJsonAsync<Endereco>(url);

            if (endereco != null && endereco.Cep != null)
            {
                Console.WriteLine($"Rua: {endereco.Logradouro}");
                Console.WriteLine($"Bairro: {endereco.Bairro}");
                Console.WriteLine($"Cidade/Estado: {endereco.Localidade}/{endereco.Uf}");
            }
            else
            {
                Console.WriteLine("CEP não encontrado.");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Erro na requisição: {ex.Message}");
        }
    }
}

1. Importações (Usings)

using System.Net.Http.Json; etc. Essas linhas importam as bibliotecas necessárias do .NET. O System.Net.Http traz o motor de requisições HTTP e a extensão .Json traz ferramentas para converter respostas JSON automaticamente.

2. Classe Endereco (DTO)

A classe Endereco atua como um molde. Suas propriedades (Cep, Logradouro, etc.) têm os mesmos nomes exatos das chaves no JSON retornado pela API do ViaCEP. Isso permite a conversão automática (deserialização).

3. Configuração Inicial

string cep = "01001000"; e a url interpolada preparam o endereço HTTPS exato onde a requisição será feita.

4. A Ferramenta: HttpClient

using HttpClient client = new HttpClient();
O HttpClient é a classe do C# usada para enviar e receber requisições da web. A palavra using garante que ele libere a memória (e a conexão de rede) assim que terminar de ser usado.

5. O Verbo GET na Prática (O Coração)

Endereco endereco = await client.GetFromJsonAsync<Endereco>(url);
Esta única linha faz 3 coisas fantásticas simultaneamente:

  • Dispara uma requisição usando o Verbo GET para a URL via HTTPS.
  • Espera a resposta chegar (por causa do await).
  • Pega a resposta em formato de texto (JSON) e converte instantaneamente para um objeto C# do tipo <Endereco>.

6. Tratamento da Resposta

O bloco if (endereco != null && endereco.Cep != null) verifica se a conversão deu certo e se o ViaCEP não retornou um erro (como CEP inexistente). Se tudo estiver OK, imprime as propriedades na tela do console.

7. Bloco Try / Catch

O try { ... } catch (Exception ex) é uma blindagem de segurança. Requisições de rede podem falhar por falta de internet, site fora do ar (timeout) ou URLs inválidas. O catch captura esse "crash" da rede e mostra uma mensagem amigável ao invés de fechar o programa bruscamente.

 

Publicidade

Comentários (0)

Nenhum comentário ainda. Seja o primeiro!

Faça login para comentar. Sem conta? Criar agora.