Inicio rápido: Consulta de URL Preview en C#Quickstart: URL Preview query in C#

En el ejemplo de C# siguiente se crea una vista previa de la dirección URL del sitio web de SwiftKey: https://swiftkey.com/en.The following C# example creates a Url Preview for the SwiftKey Web site: https://swiftkey.com/en.

Requisitos previosPrerequisites

Se requiere Visual Studio 2017 o posterior para ejecutar este código en Windows.You will need Visual Studio 2017 or later to run this code on Windows. (La edición gratuita de Community Edition funcionará).(The free Community Edition will work.)

Obtenga una clave de acceso para la evaluación gratuita de los Laboratorios de Cognitive Services.Get an access key for the free trial Cognitive Services Labs

Escenario de códigoCode scenario

El siguiente código en C# siguiente crea una vista previa de la dirección URL del sitio web de SwiftKey: https://swiftkey.com/en.The following C# code creates a URL Preview of the SwiftKey Web site: https://swiftkey.com/en.

Se implementa en los pasos siguientes:It is implemented in the following steps:

  1. Declare las variables para especificar el punto de conexión y una dirección URL de consulta para obtener una vista previa.Declare variables to specify the endpoint and a query URL to preview.
  2. Cree la solicitud.Create the request.
  3. Agregue el encabezado Ocp-Apim-Subscription-Key.Add the Ocp-Apim-Subscription-Key header.
  4. Ejecute la solicitud web de forma asincrónica.Run the Web request asynchronously.
  5. Lea la respuesta.Read the response.
  6. Imprima los encabezados y los resultados JSON en la consola.Print the headers and JSON results to the console.

Código fuenteSource code

using System;
using System.IO;
using System.Net;
using System.Text;

namespace UrlPrevCshp
{
    class Program
    {
        static void Main(string[] args)
        {
            String uriBase = "https://api.labs.cognitive.microsoft.com/urlpreview/v7.0/search";
            String searchQuery = "https://swiftkey.com/en"; 
            var uriQuery = uriBase + "?q=" + Uri.EscapeDataString(searchQuery);

            // Do the Web request and get response
            WebRequest request = HttpWebRequest.Create(uriQuery);
            request.Headers["Ocp-Apim-Subscription-Key"] = "YOUR-SUBSCRIPTION-KEY";
            HttpWebResponse response = (HttpWebResponse)request.GetResponseAsync().Result;
            string json = new StreamReader(response.GetResponseStream()).ReadToEnd();

            Console.WriteLine("\nHTTP Headers:\n");
            foreach (String header in response.Headers)
            {
                if (header.StartsWith("BingAPIs-") || header.StartsWith("X-MSEdge-"))
                    Console.WriteLine(header + ": " + response.Headers[header]);
            }

            Console.WriteLine(JsonPrettyPrint(json));
            

            Console.ReadKey();
        }


        /// <summary>
        /// Formats the given JSON string by adding line breaks and indents.
        /// </summary>
        /// <param name="json">The raw JSON string to format.</param>
        /// <returns>The formatted JSON string.</returns>
        static string JsonPrettyPrint(string json)
        {
            if (string.IsNullOrEmpty(json))
                return string.Empty;

            json = json.Replace(Environment.NewLine, "").Replace("\t", "");

            StringBuilder sb = new StringBuilder();
            bool quote = false;
            bool ignore = false;
            char last = ' ';
            int offset = 0;
            int indentLength = 2;

            foreach (char ch in json)
            {
                switch (ch)
                {
                    case '"':
                        if (!ignore) quote = !quote;
                        break;
                    case '\\':
                        if (quote && last != '\\') ignore = true;
                        break;
                }

                if (quote)
                {
                    sb.Append(ch);
                    if (last == '\\' && ignore) ignore = false;
                }
                else
                {
                    switch (ch)
                    {
                        case '{':
                        case '[':
                            sb.Append(ch);
                            sb.Append(Environment.NewLine);
                            sb.Append(new string(' ', ++offset * indentLength));
                            break;
                        case '}':
                        case ']':
                            sb.Append(Environment.NewLine);
                            sb.Append(new string(' ', --offset * indentLength));
                            sb.Append(ch);
                            break;
                        case ',':
                            sb.Append(ch);
                            sb.Append(Environment.NewLine);
                            sb.Append(new string(' ', offset * indentLength));
                            break;
                        case ':':
                            sb.Append(ch);
                            sb.Append(' ');
                            break;
                        default:
                            if (quote || ch != ' ') sb.Append(ch);
                            break;
                    }
                }
                last = ch;
            }

            return sb.ToString().Trim();
        }

    }
}

Ejecución de la aplicaciónRunning the application

Para ejecutar la aplicación:To run the application:

  1. Cree una solución de consola en Visual Studio.Create a new Console solution in Visual Studio.
  2. Reemplace Program.cs por el código proporcionado.Replace Program.cs with the provided code.
  3. Reemplace el valor YOUR-ACCESS-KEY por una clave de acceso válida para la suscripción.Replace the YOUR-ACCESS-KEY value with a valid access key for your subscription.
  4. Ejecute el programa.Run the program.

Pasos siguientesNext steps