J'utilise HttpWebRequest pour OBTENIR du service Web, qui me renvoie une chaîne JSON. Cela ressemble à quelque chose comme ça pour un GET:
// Returns JSON string
string GET(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
try {
WebResponse response = request.GetResponse();
using (Stream responseStream = response.GetResponseStream()) {
StreamReader reader = new StreamReader(responseStream, System.Text.Encoding.UTF8);
return reader.ReadToEnd();
}
}
catch (WebException ex) {
WebResponse errorResponse = ex.Response;
using (Stream responseStream = errorResponse.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, System.Text.Encoding.GetEncoding("utf-8"));
String errorText = reader.ReadToEnd();
// log errorText
}
throw;
}
}
J'utilise ensuite JSON.Net pour analyser dynamiquement la chaîne. Vous pouvez également générer la classe C # de manière statique à partir d'un exemple de sortie JSON à l'aide de cet outil codeplex: http://jsonclassgenerator.codeplex.com/
POST ressemble à ceci:
// POST a JSON string
void POST(string url, string jsonContent)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
Byte[] byteArray = encoding.GetBytes(jsonContent);
request.ContentLength = byteArray.Length;
request.ContentType = @"application/json";
using (Stream dataStream = request.GetRequestStream()) {
dataStream.Write(byteArray, 0, byteArray.Length);
}
long length = 0;
try {
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) {
length = response.ContentLength;
}
}
catch (WebException ex) {
// Log exception and throw as for GET example above
}
}
J'utilise un code comme celui-ci dans les tests automatisés de notre service Web.
Encoding.GetEncoding("utf-8")
peut être remplacé parEncoding.UTF8
WebClient pour récupérer le contenu de l'url distante et JavaScriptSerializer ou Json.NET pour désérialiser le JSON en un objet .NET. Par exemple, vous définissez une classe de modèle qui reflétera la structure JSON, puis:
Il existe également des frameworks client REST que vous pouvez extraire tels que RestSharp .
la source
Bien que les réponses existantes soient des approches valables, elles sont désuètes. HttpClient est une interface moderne pour travailler avec les services Web RESTful. Consultez la section des exemples de la page dans le lien, elle présente un cas d'utilisation très simple pour un HTTP GET asynchrone.
la source