wciąż jestem nowy na C # i próbuję utworzyć aplikację dla tej strony, która powie mi, kiedy otrzymam powiadomienie (odpowiedź, komentarz itp.). Ale na razie próbuję tylko wykonać proste wywołanie interfejsu API, które pobierze dane użytkownika.
Używam programu Visual Studio Express 2012 do tworzenia aplikacji C #, w której (na razie) wpisujesz swój identyfikator użytkownika, więc aplikacja wyśle żądanie z identyfikatorem użytkownika i wyświetli statystyki tego identyfikatora użytkownika.
tutaj jest kod, w którym próbuję wysłać żądanie:
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;
}
}
}
klasa jest obiektem, do którego można uzyskać dostęp z formularza, po prostu analizując identyfikator użytkownika i wysyłając żądanie.
Wypróbowałem wiele przykładów, które szukałem w google, ale nie mam pojęcia, dlaczego otrzymuję tę wiadomość „ ” na wszystkie sposoby.
jestem nowy w tego rodzaju algorytmie, jeśli ktoś może udostępnić książkę lub samouczek, który pokazuje, jak robić tego typu rzeczy (wyjaśniając każdy krok), byłbym wdzięczny
źródło
html
ciąg w+1
celu uzyskania czystego kodu ..Innym sposobem jest użycie „HttpClient” w następujący sposób:
HttpClient vs HttpWebRequest
Aktualizacja z 22 czerwca 2020 r .: Nie zaleca się używania httpclient w bloku „using”, ponieważ może to spowodować wyczerpanie portu.
Jeśli używasz .Net Core 2.1+, rozważ użycie IHttpClientFactory i wstrzyknięcie w ten sposób w kodzie startowym.
źródło
HttpClient
Instancja jest używana tylko raz przez cały okres programu i jest umieszczona tuż przed zakończeniem programu. To jest całkowicie poprawne i właściwe.Najprostszy sposób na moją opinię
LUB
źródło
źródło