En este video te enseñare como hacer una solicitud Get a una URL y deserializar su contenido JSON en un objeto para ser mostrado en un DataGridView.
Etiqueta: get
Curso de MVC API .Net C#| Introducción, Hola mundo | #1
En este primer video te muestro como puedes invocar un método básico de MVC Api .Net, y como puedes estructurar tu proyecto para que regrese todos los mensajes en JSON.
Curso MVC .Net: https://www.youtube.com/watch?v=UZNoQMio4XM&list=PLWYKfSbdsjJhzIXJW7FUZUEivr3HGKQZG
¿Cómo ejecutar una URL desde SQL Server? Transact-SQL
Es posible ejecutar una url desde SQL Server, esto es útil si quieres realizar algunas tareas programadas por medio de SQL Agent, tareas que inicien por una Url de tu pagina o sistema.
A continuación te muestro cómo es posible ejecutar una URL desde Sql Server.
-- declaramos una variable cadena y ponemos la url a invocar Declare @url varchar(max)='https://hdeleon.net/' -- declaramos una variable entero, para guardar el id del objeto OLE que crearemos Declare @Object as Int; -- Una variable cadena para la respuesta Declare @ResponseText as Varchar(8000); -- creamos un objeto OLE Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT; -- Ejecutamos la url por medio de post Exec sp_OAMethod @Object, 'open', NULL, 'post',@url,'false' Exec sp_OAMethod @Object, 'send' Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT -- imprimimos resultado Select @ResponseText --eliminamos nuestro id de objeto OLE Exec sp_OADestroy @Object
Con esto ya puedes ejecutar cualquier URL desde Sql Server.
¿Cómo enviar un objeto json en una solicitud Get o Post en C# .Net?
Ahora que estamos en la era de los webservice todos tenemos la necesidad de saber la forma de enviar datos por medio de Get o Post. En C# la forma de hacer una solicitud a un servicio o a un api es muy sencilla y en el siguiente ejemplo te muestro como hacerlo por medio de una clase que yo hice.
La clase siguiente está preparada para enviar cualquier tipo de objeto ya que recibe el tipo de objeto que se enviara y lo serializa en json.
Recuerda que si el objeto tiene referencias circulares, la siguiente clase no funcionara.
Clase:
public class RequestHdeleon //esta clase nos sirve para tener control del resultado regresado por la solicitud public class Reply { public Reply() { this.success = 0; message = ""; } public int success { get; set; } public object data { get; set; } public String menssage { get; set; } } public Reply Send<T>(string url,T objectRequest, string method="POST"){ try { Reply oReply= new Reply(); JavaScriptSerializer js = new JavaScriptSerializer(); //serializamos el objeto string json = Newtonsoft.Json.JsonConvert.SerializeObject(objectRequest); //peticion WebRequest request = WebRequest.Create(url_callback); //headers request.Method = method; request.PreAuthenticate = true; request.ContentType = "application/json;charset=utf-8'"; request.Timeout = 10000; //esto es opcional using (var streamWriter = new StreamWriter(request.GetRequestStream())) { streamWriter.Write(json); streamWriter.Flush(); } var httpResponse = (HttpWebResponse)request.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { result = streamReader.ReadToEnd(); } oReply.success = 1; //y aquí va nuestra respuesta, la cual es lo que nos regrese el sitio solicitado oReply.data = result; }catch(Exception e){ oReply.result = 0; //en caso de error lo manejamos en el mensaje oReply.menssage = e.Message; } return oReply; } }
Ejemplo de como utilizarla:
public class UnaClase(){ public string algo{get;set;} } //creamos la clase para enviar los parametros UnaClase oUnObjeto= new UnaClase(); oUnObjeto.algo="pato feliz"; //Creamos el objeto para solicitud RequestHdeleon oRequest= new RequestHdeleon(); //primer parametro url //segundo parametro el objeto //tercer parametro el metodo: POST, GET, PUT, DELETE RequestHdeleon.Reply oReply=oRequest.Send<UnaClase>("http://somesite.com/api/somecontroller/",oUnObjeto,"POST");