httpstatuscode c#

c# - httpstatuscode - La forma más sencilla de leer la respuesta de WebResponse



c# httpwebrequest get json response (3)

private void RespCallback(IAsyncResult asynchronousResult) { try { WebRequest myWebRequest1 = (WebRequest)asynchronousResult.AsyncState; // End the Asynchronous response. WebResponse webResponse = myWebRequest1.EndGetResponse(asynchronousResult); } catch (Exception) { //TODO:Log the error } }

ahora que tiene el objeto webResponse, ¿cuál es la forma más fácil de leer sus contenidos?


Esta es una forma de hacerlo si la respuesta proviene de XML.

HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("https://www.yoururl.com"); WebResponse response = myReq.GetResponse(); Stream responseStream = response.GetResponseStream(); XmlTextReader reader = new XmlTextReader(responseStream); while (reader.Read()) { if (reader.NodeType == XmlNodeType.Text) Console.WriteLine("{0}", reader.Value.Trim()); } Console.ReadLine();


Simplemente usaría los métodos asíncronos en WebClient , mucho más fácil de usar:

WebClient client = new WebClient(); client.DownloadStringCompleted += (sender,args) => { if(!args.Cancelled && args.Error == null) { string result = args.Result; // do something fun... } }; client.DownloadStringAsync(new Uri("http://foo.com/bar"));

Pero para responder la pregunta; asumiendo que es texto , algo así como (teniendo en cuenta que puede necesitar especificar la codificación):

using (var reader = new StreamReader(response.GetResponseStream())) { string result = reader.ReadToEnd(); // do something fun... }


internal string Get(string uri) { using (WebResponse wr = WebRequest.Create(uri).GetResponse()) { using (StreamReader sr = new StreamReader(wr.GetResponseStream())) { return sr.ReadToEnd(); } } }