Frage

Ich bin ein kleines Tool in C # zu schreiben, die zu / von einer Website senden und empfangen Daten müssen mit POST und json Formatierung. Ich habe so etwas noch nie zuvor in C # (oder irgendeine Sprache wirklich) getan, damit ich bin zu kämpfen einige nützliche Informationen zu finden, um mich begonnen.

Ich habe einige Informationen über die WebRequest-Klasse in C # gefunden (speziell von hier ), aber bevor ich das Tauchen in sie beginnen, fragte ich mich, ob dies das richtige Werkzeug für den Job war.

Ich habe eine Vielzahl von Werkzeugen gefundene Daten in das JSON-Format zu konvertieren, aber sonst nicht viel, so dass Informationen wären wirklich hilfreich hier, wenn ich nach unten einer Sackgasse enden.

War es hilfreich?

Lösung

WebRequest und insbesondere die HttpWebRequest-Klasse ist ein guter Ausgangspunkt für das, was Sie erreichen wollen. Um die Anforderung zu erstellen finden Sie die WebRequest.Create verwenden und werfen Sie die erstellte Anforderung an einen HttpWebRequest es tatsächlich zu nutzen. Sie werden dann Ihre Post-Daten erstellen und an den Stream senden wie:

HttpWebRequest req = (HttpWebRequest)
WebRequest.Create("http://mysite.com/index.php");
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
string postData = "var=value1&var2=value2";
req.ContentLength = postData.Length;

StreamWriter stOut = new
StreamWriter(req.GetRequestStream(),
System.Text.Encoding.ASCII);
stOut.Write(postData);
stOut.Close();

Ebenso können Sie die Antwort zurückgelesen durch die GetResponse-Methode mit dem Sie die resultierende Antwort Stream lesen können und tun, was Sie sonst noch tun müssen. Sie können weitere Informationen über die Klasse finden Sie unter:

http://msdn.microsoft.com/en- us / library / system.net.httpwebrequest.aspx

Andere Tipps

WebClient ist manchmal einfacher zu benutzen als WebRequest . Sie können einen Blick an ihm nehmen wollen.

Für JSON Deserialisierung Sie gehen auf die JavaScriptSerializer Klasse.

WebClient Beispiel:

using (WebClient client = new WebClient ())
{
    //manipulate request headers (optional)
    client.Headers.Add (HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");

    //execute request and read response as string to console
    using (StreamReader reader = new StreamReader(client.OpenRead(targetUri)))
    {
        string s = reader.ReadToEnd ();
        Console.WriteLine (s);
    }
}

Markiert als Wiki, falls jemand den Code

aktualisieren

Wenn es darum geht, Daten zu einer Website Posting, System.Net.HttpWebRequest (die HTTP-spezifische Implementierung von WebRequest) ist eine vollkommen anständige Lösung. Es unterstützt SSL, Asynchron-Anfragen und eine Reihe von anderen guten Sachen, und ist gut dokumentiert auf MSDN.

Die Nutzlast kann alles sein: Daten im JSON-Format oder was auch immer - solange Sie die Contenttype-Eigenschaft auf etwas, was der Server erwartet und versteht (höchstwahrscheinlich application / json, Text / json oder text / x-json), alles wird in Ordnung sein.

Ein potentielles Problem bei der Verwendung von HttpWebRequest von einem Systemdienst: da es den IE-Proxy und Anmeldeinformationen verwendet, Standardverhalten ein wenig seltsam sein kann, wenn sie als LOCAL Benutzer ausgeführt wird (oder im Prinzip jeden Konto, das nicht interaktiv auf nicht anmelden eine reguläre Basis). die Proxy und Authentifizierung Eigenschaften Einstellung Nothing (oder, wie man C # Leute nennen es lieber, null, glaube ich) sollte das vermeiden.

I WebRequest haben für die Interaktion mit Web-Sites verwendet. Es ist das richtige ‚Werkzeug‘

Ich kann nicht kommentieren die JSON Aspekt Ihrer Frage.

Die derzeit höchsten bewertete Antwort ist hilfreich, aber es sendet oder nicht JSON erhalten.

Hier ist ein Beispiel, das JSON sowohl für das Senden und Empfangen verwendet:

Wie JSON-Objekt in Web-Service schreiben

Und hier ist die Frage Stackoverflow, das hat mir geholfen, die meisten dieses Problem zu lösen:

Probleme Senden und JSON zwischen ASP.net Web-Service und ASP.Net-Web-Client Empfang

Und hier ist eine andere damit zusammenhängende Frage:

json Aufruf mit C #

Um von Instanzobjekt zu json formatierte String zu konvertieren und umgekehrt, ausprobieren Json.NET: http://json.codeplex.com/

Ich bin derzeit mit es für ein Projekt und es ist leicht zu lernen und zu arbeiten mit und bietet eine gewisse Flexibilität in Bezug auf die Serialisierung und benutzerdefinierten Typ-Wandler. Es unterstützt auch eine LINQ-Syntax für json Eingabe abzufragen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top