The following C# example creates a Url Preview for the SwiftKey Web site: https://swiftkey.com/en.
You will need Visual Studio 2017 or later to run this code on Windows. (The free Community Edition will work.)
Get an access key for the free trial Cognitive Research Technologies
The following C# code creates a URL Preview of the SwiftKey Web site: https://swiftkey.com/en.
It is implemented in the following steps:
- Declare variables to specify the endpoint and a query URL to preview.
- Create the request.
- Add the Ocp-Apim-Subscription-Key header.
- Run the Web request asynchronously.
- Read the response.
- Print the headers and JSON results to the console.
Source 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();
}
}
}
To run the application:
- Create a new Console solution in Visual Studio.
- Replace
Program.cs
with the provided code. - Replace the
YOUR-ACCESS-KEY
value with a valid access key for your subscription. - Run the program.