Utilizo HttpWebRequest para OBTENER del servicio web, que me devuelve una cadena JSON. Se parece a esto para 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;
}
}
Luego uso JSON.Net para analizar dinámicamente la cadena. Alternativamente, puede generar la clase C # de forma estática a partir de la salida JSON de muestra utilizando esta herramienta de codeplex: http://jsonclassgenerator.codeplex.com/
POST se ve así:
// 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
}
}
Utilizo un código como este en pruebas automatizadas de nuestro servicio web.
Encoding.GetEncoding("utf-8")
puede ser reemplazado porEncoding.UTF8
WebClient para recuperar el contenido de la URL remota y JavaScriptSerializer o Json.NET para deserializar el JSON en un objeto .NET. Por ejemplo, define una clase de modelo que reflejará la estructura JSON y luego:
También hay algunos marcos de cliente REST que puede consultar, como RestSharp .
fuente
Aunque las respuestas existentes son enfoques válidos, son anticuados. HttpClient es una interfaz moderna para trabajar con servicios web RESTful. Consulte la sección de ejemplos de la página en el enlace, tiene un caso de uso muy sencillo para un HTTP GET asincrónico.
fuente