Live Search mediante servicios parte II (Imagenes)

Hla a todos.

Prosiguiendo con el tema de usar Live Search mediante servicios Parte I, en la cual hicimos algo sencillo.

Esta vez lo que haremos es buscar imágenes con el api de servicios.

   1: // Agregar la referencia web al proyecto
   2: // http://soap.search.msn.com/webservices.asmx?wsdl
   3:  
   4: MSNSearchService s = new MSNSearchService();
   5: SearchRequest searchRequest = new SearchRequest();
   6:  
   7: SourceRequest[] sr = new SourceRequest[1];
   8: sr[0] = new SourceRequest();
   9: sr[0].Source = SourceType.Image;
  10: sr[0].ResultFields = ResultFieldMask.Description | ResultFieldMask.Image | ResultFieldMask.Title;
  11:  
  12: searchRequest.Query = "Microsoft";
  13: searchRequest.Requests = sr;
  14:  
  15: // Colocar el Id de http://search.live.com/developer 
  16: searchRequest.AppID = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  17: searchRequest.CultureInfo = "es-ES";
  18:  
  19: SearchResponse searchResponse = s.Search(searchRequest);
  20: foreach (Result sourceResult in searchResponse.Responses[0].Results)
  21: {
  22:     string title, description, imageUrl, imagePageUrl;
  23:     int imageHeight, imageWidth, imageFileSize;
  24:  
  25:     title = (!String.IsNullOrEmpty(sourceResult.Title)) ? sourceResult.Title : "";
  26:     description = (!String.IsNullOrEmpty(sourceResult.Description)) ? sourceResult.Description : "";
  27:     imagePageUrl = (!String.IsNullOrEmpty(sourceResult.Url)) ? sourceResult.Url : "";
  28:     imageUrl = (!String.IsNullOrEmpty(sourceResult.Image.ImageURL)) ? sourceResult.Image.ImageURL : "";
  29:     imageHeight = sourceResult.Image.ImageHeight;
  30:     imageWidth = sourceResult.Image.ImageWidth;
  31:     imageFileSize = sourceResult.Image.ImageFileSize;
  32: }

Y así quedaría en la pagina.

Image

Es algo muy sencillo de lo que se puede hacer con el api de servicios de Live Search, espero que les sirva como introducción en el tema de Live Search.

 

Romny Duarte

Live Search mediante servicios parte I

Hola a todos, prosiguiendo con uno de mis post referente a usar Live Search en nuestros sitios llamando a  una librería de JavaScript, hoy usaremos el mismo servicio pero con la diferencia que lo haremos mediante un servicio.

 

Lo primero que hay que hacer es ir a http://search.live.com/developer registrarnos para conseguir un Id que servirá para poder consumir el servicio. Seguido de esto creamos un web site normal y agregamos el servicio web que se encuentra en http://soap.search.msn.com/webservices.asmx?wsdl, después de agregar la referencia web, se nos crea el siguiente tag en el archivo web.config

   1: <appSettings>
   2:     <add key="com.msn.search.soap.webservices" 
   3:     value="http://soap.search.live.com/webservices.asmx"/>
   4: </appSettings>

Ahora agregamos la siguiente referencia en nuestro *.aspx.cs

   1: using com.msn.search.soap;

Por ahora mostrare como hacer la búsqueda de un parámetro ya establecido y imprimir los resultados en un div.

Nota: La mayor parte del código esta en el sdk http://dev.live.com/livesearch/sdk/ solo eh echo modificaciones para mi necesidad.

   1: static StringBuilder sb = new StringBuilder();
   2:     static StringWriter sw = new StringWriter(sb);
   3:     static XmlWriter writer = new XmlTextWriter(sw);
   4:  
   5:     protected void Page_Load(object sender, EventArgs e)
   6:     {
   7:         
   8:         String appId = "Tu codigo";
   9:  
  10:         String query = "geeks.ms";
  11:  
  12:         try
  13:         {
  14:             MSNSearchService s = new MSNSearchService();
  15:             SearchRequest searchRequest = new SearchRequest();
  16:  
  17:             SourceRequest[] sr = new SourceRequest[1];
  18:             sr[0] = new SourceRequest();
  19:             sr[0].Source = SourceType.Web;
  20:             sr[0].ResultFields = ResultFieldMask.All;
  21:             sr[0].Count = 50; // Resultados maximos
  22:  
  23:             searchRequest.Query = query;
  24:             searchRequest.Requests = sr;
  25:             searchRequest.AppID = appId;
  26:             searchRequest.CultureInfo = "es-ES";
  27:             searchRequest.SafeSearch = SafeSearchOptions.Moderate;
  28:             searchRequest.Flags = SearchFlags.DisableHostCollapsing
  29:                 | SearchFlags.DisableSpellCorrectForSpecialWords | SearchFlags.MarkQueryWords;
  30:  
  31:             SearchResponse searchResponse = s.Search(searchRequest);
  32:  
  33:             // Obtener el numero total de resultados de la busqueda
  34:             int totalResults = searchResponse.Responses[0].Total;
  35:  
  36:             // Iterar a traves de los resultados
  37:             foreach (Result sourceResult in searchResponse.Responses[0].Results)
  38:             {
  39:                 string Titulo, Descripcion, Url;
  40:  
  41:                 // Sacar los datos solicitados de la busqueda
  42:                 if (!String.IsNullOrEmpty(sourceResult.Title))
  43:                 {
  44:                   
  45:                     Titulo = sourceResult.Title.Replace("xe000", "<b>").Replace("xe001", "</b>");
  46:  
  47:                 }
  48:  
  49:                 if (!String.IsNullOrEmpty(sourceResult.Description))
  50:                 {
  51:                     Descripcion = sourceResult.Description.Replace("xe000", "<b>").Replace("xe001", "</b>");
  52:                 }
  53:  
  54:                 Url = (!String.IsNullOrEmpty(sourceResult.Url)) ? sourceResult.Url : "";
  55:  
  56:                 // Imprimir resultados
  57:                 _renderResults(writer, sourceResult);
  58:             }
  59:         }
  60:         catch (Exception exception)
  61:         {
  62:             // 
  63:         }
  64:  
  65:         // a hack to get the search terms bolded in the pretty output.
  66:         sb = sb.Replace("xe000", "<b>").Replace("xe001", "</b>");
  67:         Resultados.InnerHtml = sb.ToString();
  68:  
  69:     }
  70:     /// <summary>
  71:     /// Escribir los resultados en la pagina web
  72:     /// </summary>
  73:     /// <param name="writer"></param>
  74:     /// <param name="result"></param>
  75:     protected void _renderResults(XmlWriter writer, Result result)
  76:     {
  77:         writer.WriteStartElement("p");
  78:  
  79:         // Titulo
  80:         if (!String.IsNullOrEmpty(result.Title))
  81:         {
  82:             writer.WriteString("Titulo: " + result.Title);
  83:             writer.WriteStartElement("br"); writer.WriteEndElement(/*br*/);
  84:         }
  85:  
  86:         // Descripcion
  87:         if (!String.IsNullOrEmpty(result.Description))
  88:         {
  89:             writer.WriteString("Descripción: " + result.Description);
  90:             writer.WriteStartElement("br"); writer.WriteEndElement(/*br*/);
  91:         }
  92:  
  93:         // Url
  94:         if (!String.IsNullOrEmpty(result.Url))
  95:         {
  96:             writer.WriteString("Url: " + result.Url);
  97:         }
  98:  
  99:         writer.WriteEndElement(/*p*/);
 100:         writer.WriteStartElement("hr");
 101:         writer.WriteEndElement(/*hr*/);
 102:     }

 

Api

A esta altura, solo hemos enviado una petición al Api de servicio de Live Search y el nos devolvió unos datos con las opciones que solicitamos.

Espero que les halla agradado el breve ejemplo.

Saludos

Romny.