por example enviar c# json rest httpwebrequest httpwebresponse

example - leyendo la respuesta de HttpwebResponse json, C#



post json c# (2)

En una de mis aplicaciones, recibo la respuesta de una solicitud web. El servicio es Restful y devolverá un resultado similar al formato JSON a continuación:

{ "id" : "1lad07", "text" : "test", "url" : "http:////twitpic.com//1lacuz", "width" : 220, "height" : 84, "size" : 8722, "type" : "png", "timestamp" : "Wed, 05 May 2010 16:11:48 +0000", "user" : { "id" : 12345, "screen_name" : "twitpicuser" } }

y aquí está mi código actual:

byte[] bytes = Encoding.GetEncoding(contentEncoding).GetBytes(contents.ToString()); request.ContentLength = bytes.Length; using (var requestStream = request.GetRequestStream()) { requestStream.Write(bytes, 0, bytes.Length); using (var twitpicResponse = (HttpWebResponse)request.GetResponse()) { using (var reader = new StreamReader(twitpicResponse.GetResponseStream())) { //What should I do here? } } }

¿Cómo puedo leer la respuesta? Quiero la url y el nombre de usuario.


Primero necesitas un objeto

public class MyObject { public string Id {get;set;} public string Text {get;set;} ... }

Entonces aqui

using (var twitpicResponse = (HttpWebResponse)request.GetResponse()) { using (var reader = new StreamReader(twitpicResponse.GetResponseStream())) { JavaScriptSerializer js = new JavaScriptSerializer(); var objText = reader.ReadToEnd(); MyObject myojb = (MyObject)js.Deserialize(objText,typeof(MyObject)); } }

No he probado con el objeto jerárquico que tiene, pero esto debería darle acceso a las propiedades que desea.

JavaScriptSerializer System.Web.Script.Serialization


Yo usaría RestSharp - https://github.com/restsharp/RestSharp

Crear una clase para deserializar a:

public class MyObject { public string Id { get; set; } public string Text { get; set; } ... }

Y el código para conseguir ese objeto:

RestClient client = new RestClient("http://whatever.com"); RestRequest request = new RestRequest("path/to/object"); request.AddParameter("id", "123"); // The above code will make a request URL of // "http://whatever.com/path/to/object?id=123" // You can pick and choose what you need var response = client.Execute<MyObject>(request); MyObject obj = response.Data;

Echa un vistazo a http://restsharp.org/ para empezar.