Domanda

Sto scrivendo un piccolo programma in C# che sarà necessario per inviare e ricevere dati da un sito web utilizzando il POST e json formattazione.Io non ho mai fatto nulla di simile prima in C# (o qualsiasi lingua davvero) così sto cercando di trovare alcune informazioni utili per get me started.

Ho trovato alcune informazioni su la classe WebRequest in C# (in particolare dalle qui) ma prima di iniziare le immersioni in esso, mi sono chiesto se questo era lo strumento giusto per il lavoro.

Ho trovato un sacco di strumenti per convertire i dati in formato json, ma non molto altro, in modo che qualsiasi informazione sarebbe davvero utile nel caso in cui alla fine l'ho giù un vicolo cieco.

È stato utile?

Soluzione

WebRequest e, più specificamente, la classe HttpWebRequest è un buon punto di partenza per ciò che si vuole raggiungere.Per creare la richiesta di utilizzare il WebRequest.Creare e cast creato richiesta di un HttpWebRequest uso.Si crea quindi il tuo post dati e li invia al flusso come:

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();

Allo stesso modo, è possibile leggere la risposta utilizzando il metodo GetResponse, che vi permetterà di leggere il conseguente flusso di risposta e qualsiasi altra cosa è necessario fare.Potete trovare ulteriori informazioni sulla classe a:

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

Altri suggerimenti

WebClient a volte è più facile da usare rispetto WebRequest.Si potrebbe voler dare un'occhiata.

Per JSON deserializzazione si sta andando a voler guardare il JavaScriptSerializer classe.

WebClient esempio:

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);
    }
}

Contrassegnato come wiki nel caso in cui qualcuno vuole aggiornare il codice

Quando si tratta di Invio di dati a un sito web, Sistema.Net.HttpWebRequest (HTTP implementazione specifica del WebRequest) è una perfetta soluzione decente.Supporta SSL, async richieste e un sacco di altre chicche, ed è ben documentato su MSDN.

Il payload può essere qualsiasi cosa:i dati in formato JSON o qualunque cosa-come si imposta la proprietà ContentType a qualcosa che il server si aspetta e capisce (più probabile application/json, testo/json o text/x-json), tutto andrà bene.

Un potenziale problema quando si utilizza HttpWebRequest da un servizio di sistema:dal momento che utilizza IE proxy e le informazioni sulle credenziali, il comportamento predefinito può essere un po ' strano quando in esecuzione LOCALSYSTEM utente (o praticamente qualsiasi account che non accedere in modo interattivo regolare).Impostazione del Proxy e di proprietà di Autenticazione per Nothing (o, come si C# la gente preferisce chiamarlo, null, Credo) dovrebbe evitare di farlo.

Ho usato WebRequest per l'interazione con i siti web.E ' la destra 'strumento'

Non posso commentare il JSON aspetto della tua domanda.

Attualmente le più votate risposta è utile, ma non inviare o ricevere JSON.

Qui è un esempio che utilizza JSON, sia per l'invio e la ricezione di:

Come il post oggetto json nel servizio web

E qui è StackOverflow domanda che mi ha aiutato di più per risolvere questo problema:

Problemi di invio e ricezione di JSON tra ASP.net servizio web e ASP.Net web client

E qui è un'altra domanda:

json chiamata con C#

Per la conversione da oggetto di istanza di stringa in formato json e viceversa, provare Json.NET:http://json.codeplex.com/

Attualmente sto usando per un progetto ed è facile da imparare e lavorare con e offre una certa flessibilità in termini di serializzazione e personalizzata tipo di convertitori.Inoltre, supporta una sintassi LINQ per l'esecuzione di query json ingresso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top