En este quinto video te enseñare como subir archivos por medio de multipart.
Etiqueta: request
¿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");
¿Cómo obtener todos los parámetros enviados a un controller? C# MVC .Net
Cuando estamos utilizando MVC .Net muchas veces es necesario guardar lo que el usuario está enviando en logs o en la base de datos para poder monitorear errores de usuario final (Ver log sencillo en c# .Net).
De la siguiente forma obtenemos todos los parámetros enviados y ordenados en una variable cadena:
string parametros=""; //recorremos todos los parametros foreach (var parameter in Request.Params.AllKeys) { parametros += parameter + ": " + Request.Params[parameter]+"\n"; } //se ira guardando de la siguiente forma //parametro1: pato //parametro2: pato2