Olá Christopher.
Tudo bem?
O seu código parece correto à primeira vista.
O detalhe é que a API da CheapShark passou a exigir que as requisições enviem um cabeçalho User-Agent.
A documentação oficial menciona explicitamente esse requisito.
Experimente algo assim:
using System.Net.Http;
using HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add(
"User-Agent",
"MeuAppCSharp/1.0");
string resposta = await client.GetStringAsync(
"https://www.cheapshark.com/api/1.0/deals");
Console.WriteLine(resposta);
Outra possibilidade é capturar mais detalhes da exceção para verificar exatamente o que o servidor está retornando:
try
{
using HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add(
"User-Agent",
"MeuAppCSharp/1.0");
string resposta = await client.GetStringAsync(
"https://www.cheapshark.com/api/1.0/deals");
Console.WriteLine(resposta);
}
catch (HttpRequestException ex)
{
Console.WriteLine(ex.Message);
}
Também vale conferir:
- Se você copiou a URL sem espaços extras.
- Se está usando uma versão recente do .NET (.NET 6, 7, 8 ou superior).
- Se a sua rede/proxy corporativo não está alterando a requisição.
Já vi outros alunos enfrentarem esse problema porque o exercício foi criado quando a API aceitava requisições sem restrições, mas posteriormente a CheapShark passou a aplicar validações adicionais (headers, limites de acesso, proteção anti-bot etc.).
Para isolar o problema, experimente também acessar uma API pública simples:
using HttpClient client = new();
string resposta = await client.GetStringAsync(
"https://jsonplaceholder.typicode.com/posts/1");
Console.WriteLine(resposta);
Se esse código funcionar e apenas a CheapShark falhar, então o problema não está no seu uso do HttpClient, mas em alguma exigência específica da API da CheapShark.
O ideal mesmo é consultar a documentação no site oficial da api : (https://apidocs.cheapshark.com/) .
Avise qualquer duvida.
Bons estudos.