example ejemplo create c# .net webrequest

ejemplo - ¿WebRequest es la herramienta correcta de C#para interactuar con sitios web?



webrequest stream c# (7)

Estoy escribiendo una pequeña herramienta en C # que necesitará enviar y recibir datos hacia / desde un sitio web utilizando el formato POST y json. Nunca antes había hecho algo como esto en C # (o en cualquier otro idioma), así que estoy luchando por encontrar información útil para ayudarme a comenzar.

Encontré algo de información en la clase WebRequest en C # (específicamente desde aquí ) pero antes de comenzar a bucear en ella, me pregunté si esta era la herramienta adecuada para el trabajo.

He encontrado muchas herramientas para convertir datos al formato json pero no mucho más, por lo que cualquier información sería realmente útil aquí en caso de que termine en un callejón sin salida.


Cuando se trata de enviar datos a un sitio web, System.Net.HttpWebRequest (la implementación específica de HTTP de WebRequest) es una solución perfecta. Es compatible con SSL, solicitudes asíncronas y un montón de otras cosas buenas, y está bien documentado en MSDN.

La carga útil puede ser cualquier cosa: datos en formato JSON o lo que sea, siempre que establezca la propiedad ContentType en algo que el servidor espera y entiende (probablemente application / json, text / json o text / x-json), todo será multa.

Un problema potencial cuando se utiliza HttpWebRequest desde un servicio del sistema: dado que utiliza el proxy de IE y la información de credenciales, el comportamiento predeterminado puede ser un poco extraño cuando se ejecuta como el usuario LOCALSYSTEM (o básicamente cualquier cuenta que no se conecta de forma interactiva de forma regular ) Establecer las propiedades de Proxy y Autenticación en Nothing (o, como su gente de C # prefiere llamarlo, null , supongo) debería evitar eso.


He usado WebRequest para interactuar con sitios web. Es la ''herramienta'' correcta

No puedo comentar sobre el aspecto JSON de su pregunta.


WebRequest y más específicamente la clase HttpWebRequest es un buen punto de partida para lo que quiere lograr. Para crear la solicitud, utilizará WebRequest.Create y enviará la solicitud creada a HttpWebRequest para que realmente la use. A continuación, creará sus datos de publicación y los enviará a la transmisión como:

HttpWebRequest req = (HttpWebRequest) WebRequest.Create("http://mysite.com/index.php"); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; string postData = "var=value1&var2=value2"; req.ContentLength = postData.Length; StreamWriter stOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII); stOut.Write(postData); stOut.Close();

De forma similar, puede leer la respuesta utilizando el método GetResponse que le permitirá leer la secuencia de respuesta resultante y hacer todo lo que necesite hacer. Puedes encontrar más información sobre la clase en:

http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx


WebClient a veces es más fácil de usar que WebRequest . Es posible que desee echarle un vistazo.

Para la deserialización JSON, querrá consultar la clase JavaScriptSerializer .

Ejemplo de WebClient:

using (WebClient client = new WebClient ()) { //manipulate request headers (optional) client.Headers.Add (HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); //execute request and read response as string to console using (StreamReader reader = new StreamReader(client.OpenRead(targetUri))) { string s = reader.ReadToEnd (); Console.WriteLine (s); } }

Marcado como wiki en caso de que alguien quiera actualizar el código



Para convertir el objeto de instancia a una cadena con formato json y viceversa, pruebe Json.NET: http://json.codeplex.com/

Actualmente lo estoy usando para un proyecto y es fácil de aprender y trabajar, y ofrece cierta flexibilidad en términos de serialización y convertidores de tipo personalizado. También es compatible con una sintaxis LINQ para consultar la entrada json.