Ich bin noch neu in c # und ich versuche, eine Anwendung für diese Seite zu erstellen, die mir sagt, wann ich eine Benachrichtigung erhalte (beantwortet, kommentiert usw.). Aber im Moment versuche ich nur, die API einfach anzurufen, um die Daten des Benutzers zu erhalten.
Ich verwende Visual Studio Express 2012, um die C # -Anwendung zu erstellen, in der Sie (vorerst) Ihre Benutzer-ID eingeben, sodass die Anwendung die Anforderung mit der Benutzer-ID stellt und die Statistiken dieser Benutzer-ID anzeigt.
Hier ist der Code, in dem ich versuche, die Anfrage zu stellen:
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;
}
}
}
Die Klasse ist ein Objekt, auf das über das Formular zugegriffen wird, indem einfach die Benutzer-ID analysiert und die Anforderung gestellt wird.
Ich habe viele der Beispiele ausprobiert, die ich mir bei Google angesehen habe, aber keine Ahnung, warum ich diese Nachricht " " auf alle Arten erhalte.
Ich bin neu in dieser Art von Algorithmus. Wenn jemand ein Buch oder ein Tutorial teilen kann, das zeigt, wie man solche Dinge macht (jeden Schritt erklärt), würde ich es begrüßen
quelle
html
Zeichenfolge+1
für sauberen Code imEine andere Möglichkeit ist die Verwendung von 'HttpClient' wie folgt:
HttpClient vs HttpWebRequest
Update 22. Juni 2020: Es wird nicht empfohlen, httpclient in einem "using" -Block zu verwenden, da dies zu einer Erschöpfung des Ports führen kann.
Wenn Sie .Net Core 2.1+ verwenden, sollten Sie IHttpClientFactory verwenden und wie folgt in Ihren Startcode einfügen.
quelle
HttpClient
Instanz wird genau einmal für die Lebensdauer des Programms verwendet und kurz vor dem Beenden des Programms entsorgt. Das ist völlig richtig und angemessen.Einfachster Weg für meine Meinung
ODER
quelle
quelle