Ainda sou novo no c # e estou tentando criar um aplicativo para esta página que me avisará quando receber uma notificação (respondida, comentada, etc.). Mas, por enquanto, estou apenas tentando fazer uma chamada simples para a API que obterá os dados do usuário.
Estou usando o Visual studio express 2012 para construir o aplicativo C #, onde (por enquanto) você insere seu id de usuário, para que o aplicativo faça a solicitação com o id de usuário e mostre as estatísticas deste id de usuário.
aqui está o código em que estou tentando fazer a solicitação:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//Request library
using System.Net;
using System.IO;
namespace TestApplication
{
class Connect
{
public string id;
public string type;
protected string api = "https://api.stackexchange.com/2.2/";
protected string options = "?order=desc&sort=name&site=stackoverflow";
public string request()
{
string totalUrl = this.join(id);
return this.HttpGet(totalUrl);
}
protected string join(string s)
{
return api + type + "/" + s + options;
}
protected string get(string url)
{
try
{
string rt;
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
rt = reader.ReadToEnd();
Console.WriteLine(rt);
reader.Close();
response.Close();
return rt;
}
catch(Exception ex)
{
return "Error: " + ex.Message;
}
}
public string HttpGet(string URI)
{
WebClient client = new WebClient();
// Add a user agent header in case the
// requested URI contains a query.
client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
Stream data = client.OpenRead(URI);
StreamReader reader = new StreamReader(data);
string s = reader.ReadToEnd();
data.Close();
reader.Close();
return s;
}
}
}
a classe é um objeto e está sendo acessada a partir do formulário apenas analisando o ID do usuário e fazendo a solicitação.
Tentei muitos dos exemplos que procurei no google, mas não faço ideia por que estou recebendo de todas as formas a mensagem " ".
Eu sou novo neste tipo de algoritmo, se alguém puder compartilhar um livro ou tutorial que mostra como fazer esse tipo de coisa (explicando cada etapa), eu agradeceria
fonte
html
string+1
para código limpo a propósito ..Outra maneira é usar 'HttpClient' assim:
HttpClient vs HttpWebRequest
Atualização de 22 de junho de 2020: não é recomendado usar httpclient em um bloco 'usando', pois isso pode causar o esgotamento da porta.
Se estiver usando .Net Core 2.1+, considere usar IHttpClientFactory e injetar assim em seu código de inicialização.
fonte
HttpClient
instância é usada exatamente uma vez durante a vida útil do programa e é descartada pouco antes de o programa ser encerrado. Isso é completamente correto e apropriado.Maneira mais simples para minha opinião
OU
fonte
fonte