69. Nuestro propio buscador de peliculas (7)
- En este capítulo del curso de programación en c# con visual studio 2017 , continuaremos con nuestro nuevo proyecto consistente en crear nuestro propio buscador. Ya estamos utilizando la API que nos proporciona https://www.themoviedb.org , para realizar consultas y mostrar los resultados de una manera estructurada en pantalla. Además ya tenemos preparada la estructura de base de datos necesaria para almacenar información.- En esta entrada preparamos la aplicación para realizar peticiones a nuestra base datos para poder almacenar la información en la tabla que preparamos en el capítulo anterior. Este ejemplo pretende ser un simil, a pequeña escala, de lo que hacen los grandes buscadores cada vez que realizamos una petición. Con cada busquedas que hacemos damos datos con los que crean perfiles orientados al marketing para su propio beneficio.Nada es gratis en internet, aunque lo parezca.
- Os dejo el video con el ejemplo:
- Una vez visto el video os dejo el código de la página aspx que relizan la petición y de nuestra clase Uitl.
- Clase Util.cs:
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
namespace BuscadorWebPeliculas
{
public class Util
{
public string peticionAPI(string pathPeticion, string tipoPeticion, byte[] Datos)
{
string Resultado = String.Empty;
HttpWebRequest WReq = (HttpWebRequest)HttpWebRequest.Create(pathPeticion);
WReq.ContentType = "application/json; charset=UTF-8";
if (Datos != null)
{
WReq.ContentLength = Datos.Length;
WReq.GetRequestStream().Write(Datos, 0, Datos.Length);
}
WReq.Method = tipoPeticion;
HttpWebResponse res = (HttpWebResponse)WReq.GetResponse();
Encoding Codificacion = ASCIIEncoding.UTF8;
StreamReader SReader = new StreamReader(res.GetResponseStream(), Codificacion);
Resultado = SReader.ReadToEnd();
return Resultado;
}
public object format_json(string json)
{
dynamic parsedJson = JsonConvert.DeserializeObject(json);
return parsedJson;
}
public void guardarBusquedasUsuarios(string ip, string navegador, string plataforma, string busqueda)
{
SqlConnection conexion = new SqlConnection(ConfigurationManager.ConnectionStrings["EmpresaConnectionString"].ConnectionString);
try
{
conexion.Open();
SqlCommand com = conexion.CreateCommand();
com.CommandType = System.Data.CommandType.StoredProcedure;
com.CommandText = "dbo.GuardarBusquedas";
com.Parameters.Add("@ip", SqlDbType.VarChar, 500).Value = ip;
com.Parameters.Add("@navegador", SqlDbType.VarChar, 500).Value = navegador;
com.Parameters.Add("@plataforma ", SqlDbType.VarChar, 500).Value = plataforma;
com.Parameters.Add("@busqueda ", SqlDbType.VarChar, 500).Value = busqueda;
com.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
finally
{
if (conexion != null && conexion.State == System.Data.ConnectionState.Open)
conexion.Close();
conexion.Dispose();
}
}
}
}
- Clase Default.aspx.cs:
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace BuscadorWebPeliculas
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Unnamed2_Click(object sender, ImageClickEventArgs e)
{
if (txtBuscador.Text != String.Empty)
{
tableRes.Controls.Clear();
Util u = new Util();
String resultado = String.Empty;
String rutaPeticion = ConfigurationManager.AppSettings["search"].ToString();
JsonSerializerSettings ConfigJson = new JsonSerializerSettings();
ConfigJson.NullValueHandling = NullValueHandling.Ignore;
rutaPeticion += "?api_key=" + ConfigurationManager.AppSettings["claveApi"].ToString() + "&language=es-ES";
rutaPeticion += "&query=" + txtBuscador.Text;
resultado = u.peticionAPI(rutaPeticion, "GET", null);
RespuestaSearch rest = JsonConvert.DeserializeObject<RespuestaSearch>(resultado);
for (int i = 0; i < rest.results.Count; i++)
{
Image img = new Image();
img.Width = 100;
img.Height = 125;
if (rest.results[i].poster_path != String.Empty)
img.ImageUrl = "https://image.tmdb.org/t/p/w500/" + rest.results[i].poster_path;
Label l = new Label();
l.Text = "<b>" + rest.results[i].release_date + " " + rest.results[i].title + "</b>: " + rest.results[i].overview + "<br>";
System.Web.UI.HtmlControls.HtmlTableRow tRow = new System.Web.UI.HtmlControls.HtmlTableRow();
System.Web.UI.HtmlControls.HtmlTableCell tCell = new System.Web.UI.HtmlControls.HtmlTableCell();
System.Web.UI.HtmlControls.HtmlTableCell tCell2 = new System.Web.UI.HtmlControls.HtmlTableCell();
tCell.Controls.Add(img);
tCell2.Controls.Add(l);
tRow.Cells.Add(tCell);
tRow.Cells.Add(tCell2);
tCell2.VAlign = "TOP";
tableRes.Rows.Add(tRow);
}
guardarDatosBusquedas();
}
}
private void guardarDatosBusquedas()
{
try
{
string userip = Request.UserHostAddress;
string navegador = Request.Browser.Browser;
string plataforma = Request.Browser.Platform;
//LLAMAR A BBDD
Util u = new Util();
u.guardarBusquedasUsuarios(userip, navegador, plataforma, txtBuscador.Text);
}
catch (Exception ex)
{
//DE MOMENTO LO DEJO VACIA TRATAR COMO SE QUIERA
}
}
}
}
No hay comentarios:
Publicar un comentario