2011-10-27 16 views
11

Voglio fare la mia C# applicazione per essere in grado di inviare una richiesta HTTP e ricevere la risposta in fase di esecuzioneEffettuare e ricevere una richiesta HTTP in C#

una spiegazione dal sito che voglio chiedere è HERE

non ho alcuna esperienza con che prima, quindi sono un po 'confuso circa la JSON, XML roba so che avrò bisogno di un parser XML o qualcosa di simile per comprendere la richiesta

risposta

19

Fare un La richiesta HTTP è molto semplice se non si desidera personalizzarla: una chiamata di metodo a WebClient.DownloadString. Ad esempio:

var client = new WebClient(); 
string html = client.DownloadString("http://www.google.com"); 
Console.WriteLine(html); 

È necessario creare l'URL corretto ogni volta in base alla documentazione a cui si collega.

Se si utilizza il codice di esempio sopra per parlare con la propria API, html (che in realtà è i dati di risposta in generale) conterrà XML o JSON come stringa. Dovresti quindi analizzarlo in qualche altro tipo di albero degli oggetti in modo che tu possa lavorare con la risposta.

+0

Ad un certo punto questo approccio si morderà se si tenta di utilizzarlo con XML. Otterrai un segno di ordinamento dei byte come i primi caratteri e il paser XML non lo deserializzerà correttamente. –

+0

@DarrelMiller: Perché il server Web restituisce una BOM quando c'è l'intestazione 'Content-Type' per specificare la codifica? Anche se lo fa, una semplice combo 'StartsWith' /' SubString' rende molto facile aggirarlo. – Jon

+0

Certo, non è troppo difficile da risolvere se si conosce qual è il problema, ma la maggior parte delle persone che scelgono di utilizzare webclient.DownloadString di solito no! –

3

Ti consigliamo di cercare i HttpWebRequest e HttpWebResponse oggetti. Questi saranno gli oggetti che effettivamente fanno le richieste HTTP.

La richiesta e la risposta conterranno XML e JSON nei corpi per API di ViralHeat a cui ci si è collegati.

6

Oltre all'utilizzo di WebClient come suggerito, è possibile anche dare un'occhiata a EasyHttp di Hadi Hariri di JetBrains. Lo si può trovare a https://github.com/hhariri/EasyHttp Sintesi da Leggimi:

EasyHTTP - Un facile da usare client HTTP che supporta:

  • HEAD, PUT, DELETE, GET, POST
  • Cookies
  • autenticazione
  • Digitazione dinamica e statica
  • XML, JSON e WWW-Url codifica/decodifica codifica modulo
  • Caricamento file entrambi v ia PUT e POST (multipart/formdata)
  • Alcune altre piccole caratteristiche pulito ....
1

Questo http://www.nuget.org/List/Packages/HttpClient è httpclient strategico di Microsoft in movimento in avanti. Mi aspetto di vedere questa libreria implementata su tutte le piattaforme Microsoft nel prossimo futuro.

+0

Come sai che verrà implementato su tutte le piattaforme Microsoft? Link? –

+1

@MontanaHarkin Non ho detto che lo sapevo :-). Ho detto, "mi aspetto". So che è stato progettato per abilitare questo supporto. Ecco perché le funzionalità specifiche del desktop di Windows, come WinINetProxy, si trovano nel WebRequestHandler e non nell'HttpClientHandler predefinito? Mi è stato anche detto da uno degli architetti che funzionerà su WinRT. –

Problemi correlati