Schnellstart: URL-Vorschauabfrage in C#Quickstart: URL Preview query in C#

Im folgenden C#-Beispiel wird eine URL-Vorschau für die SwiftKey-Website erstellt: https://swiftkey.com/en.The following C# example creates a Url Preview for the SwiftKey Web site: https://swiftkey.com/en.

VoraussetzungenPrerequisites

Sie benötigen Visual Studio 2017 oder höher, um diesen Code unter Windows ausführen zu können.You will need Visual Studio 2017 or later to run this code on Windows. (Die kostenlose Community Edition ist hierfür geeignet.)(The free Community Edition will work.)

Rufen Sie einen Zugriffsschlüssel für die kostenlose Testversion von Cognitive Services Labs ab.Get an access key for the free trial Cognitive Services Labs

CodeszenarioCode scenario

Der folgende C#-Code erstellt eine URL-Vorschau der SwiftKey-Website: https://swiftkey.com/en.The following C# code creates a URL Preview of the SwiftKey Web site: https://swiftkey.com/en.

Er wird in den folgenden Schritten implementiert:It is implemented in the following steps:

  1. Deklarieren von Variablen zum Angeben des Endpunkts und Abfragen einer URL für die VorschauDeclare variables to specify the endpoint and a query URL to preview.
  2. Erstellen der AnforderungCreate the request.
  3. Hinzufügen des Ocp-Apim-Subscription-Key-HeadersAdd the Ocp-Apim-Subscription-Key header.
  4. Asynchrone Ausführung der WebanforderungRun the Web request asynchronously.
  5. Lesen der AntwortRead the response.
  6. Ausgeben der Header und JSON-Ergebnisse an die KonsolePrint the headers and JSON results to the console.

QuellcodeSource 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();
        }

    }
}

Ausführen der AnwendungRunning the application

So führen Sie die Anwendung aus:To run the application:

  1. Erstellen Sie eine neue Konsolenprojektmappe in Visual StudioCreate a new Console solution in Visual Studio.
  2. Ersetzen Sie Program.cs durch den bereitgestellten CodeReplace Program.cs with the provided code.
  3. Ersetzen Sie den YOUR-ACCESS-KEY-Wert durch einen für Ihr Abonnement gültigen ZugriffsschlüsselReplace the YOUR-ACCESS-KEY value with a valid access key for your subscription.
  4. Führen Sie das Programm aus.Run the program.

Nächste SchritteNext steps