Démarrage rapide : Rechercher des actualités en C# et avec l’API REST Recherche d’actualités Bing
Avertissement
Le 30 octobre 2020, les API de recherche Bing sont passées des services Azure AI aux services de recherche Bing. Cette documentation est fournie à des fins de référence uniquement. Pour accéder à la documentation mise à jour, consultez la documentation de l’API Recherche Bing. Pour obtenir des instructions sur la création de nouvelles ressources Azure pour Recherche Bing, consultez Créer une ressource Recherche Bing à l’aide de Place de marché Azure.
Utilisez ce guide de démarrage rapide pour effectuer votre premier appel à l’API Recherche d’actualités Bing. Cette application simple en C# envoie une requête de recherche d’actualités à l’API et affiche ensuite la réponse JSON.
Bien que cette application soit écrite en C#, l’API est un service web RESTful compatible avec la plupart des langages de programmation.
Le code complet de cet exemple est disponible sur GitHub.
Prérequis
- N’importe quelle édition de Visual Studio 2017 ou ultérieure.
- Le framework Json.NET, disponible sous forme de package NuGet.
- Si vous utilisez Linux/MacOS, vous pouvez exécuter cette application en utilisant Mono.
Créer une ressource Azure
Commencez à utiliser l’API Recherche d’actualités Bing en créant une des ressources Azure suivantes :
- Disponible via le portail Azure jusqu’à ce que vous supprimiez la ressource.
- Utilisez le niveau tarifaire Gratuit pour tester le service, puis effectuez par la suite une mise à niveau vers un niveau payant pour la production.
- Disponible via le portail Azure jusqu’à ce que vous supprimiez la ressource.
- Utilisez la même clé et le même point de terminaison pour vos applications, sur plusieurs services Azure AI.
Créer et initialiser un projet
Créez une solution console en C# dans Visual Studio. Ensuite, ajoutez les espaces de noms suivants dans le fichier de code principal :
using System; using System.Text; using System.Net; using System.IO; using System.Collections.Generic;
Créez des variables pour le point de terminaison d’API, votre clé d’abonnement et le terme de recherche. Vous pouvez utiliser le point de terminaison global dans le code suivant, ou le point de terminaison de sous-domaine personnalisé affiché dans le portail Azure pour votre ressource.
const string accessKey = "enter key here"; const string uriBase = "https://api.cognitive.microsoft.com/bing/v7.0/news/search"; const string searchTerm = "Microsoft";
Créer un struct pour mettre en forme la réponse de la recherche d’actualités Bing
Définissez un struct SearchResult
pour contenir les résultats de recherche d’actualités et les informations d’en-tête JSON.
struct SearchResult
{
public String jsonResult;
public Dictionary<String, String> relevantHeaders;
}
Créer et traiter une requête de recherche d’actualités
Créez une méthode nommée
BingNewsSearch()
pour appeler l’API, puis définissez le type de retour sur le structSearchResult
créé précédemment.Ajoutez du code à cette méthode en suivant les étapes ci-dessous.
Construisez l’URI de la requête de recherche. Notez que le terme de recherche
toSearch
doit être mis en forme avant d’être ajouté à la chaîne.static SearchResult BingNewsSearch(string toSearch){ var uriQuery = uriBase + "?q=" + Uri.EscapeDataString(toSearch); //...
Effectuez la requête web et obtenez la réponse sous la forme de chaîne JSON.
WebRequest request = WebRequest.Create(uriQuery); request.Headers["Ocp-Apim-Subscription-Key"] = subscriptionKey; HttpWebResponse response = (HttpWebResponse)request.GetResponseAsync().Result; string json = new StreamReader(response.GetResponseStream()).ReadToEnd();
Créez l’objet résultat de la recherche, puis extrayez les en-têtes HTTP Bing. Retournez ensuite
searchResult
.// Create the result object for return var searchResult = new SearchResult() { jsonResult = json, relevantHeaders = new Dictionary<String, String>() }; // Extract Bing HTTP headers foreach (String header in response.Headers) { if (header.StartsWith("BingAPIs-") || header.StartsWith("X-MSEdge-")) searchResult.relevantHeaders[header] = response.Headers[header]; } return searchResult;
Traiter la réponse
Dans la méthode principale, appelez BingNewsSearch()
et stockez la réponse retournée. Ensuite, désérialisez le JSON dans un objet où vous pouvez afficher les valeurs de la réponse.
SearchResult result = BingNewsSearch(searchTerm);
//deserialize the JSON response
dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(result.jsonResult);
Console.WriteLine(jsonObj["value"][0])
Exemple de réponse JSON
Une réponse correcte est retournée au format JSON, comme dans l’exemple suivant :
{
"_type": "News",
"readLink": "https:\/\/api.cognitive.microsoft.com\/api\/v7\/news\/search?q=Microsoft",
"totalEstimatedMatches": 36,
"sort": [
{
"name": "Best match",
"id": "relevance",
"isSelected": true,
"url": "https:\/\/api.cognitive.microsoft.com\/api\/v7\/news\/search?q=Microsoft"
},
{
"name": "Most recent",
"id": "date",
"isSelected": false,
"url": "https:\/\/api.cognitive.microsoft.com\/api\/v7\/news\/search?q=Microsoft&sortby=date"
}
],
"value": [
{
"name": "Microsoft to open flagship London brick-and-mortar retail store",
"url": "http:\/\/www.contoso.com\/article\/microsoft-to-open-flagshi...",
"image": {
"thumbnail": {
"contentUrl": "https:\/\/www.bing.com\/th?id=ON.F9E4A49EC010417...",
"width": 220,
"height": 146
}
},
"description": "After years of rumors about Microsoft opening a brick-and-mortar...",
"about": [
{
"readLink": "https:\/\/api.cognitive.microsoft.com\/api\/v7\/entiti...",
"name": "Microsoft"
},
{
"readLink": "https:\/\/api.cognitive.microsoft.com\/api\/v7\/entit...",
"name": "London"
}
],
"provider": [
{
"_type": "Organization",
"name": "Contoso"
}
],
"datePublished": "2017-09-21T21:16:00.0000000Z",
"category": "ScienceAndTechnology"
},
. . .
{
"name": "Microsoft adds Availability Zones to its Azure cloud platform",
"url": "https:\/\/contoso.com\/2017\/09\/21\/microsoft-adds-availability...",
"image": {
"thumbnail": {
"contentUrl": "https:\/\/www.bing.com\/th?id=ON.0AE7595B9720...",
"width": 700,
"height": 466
}
},
"description": "Microsoft has begun adding Availability Zones to its...",
"about": [
{
"readLink": "https:\/\/api.cognitive.microsoft.com\/api\/v7\/entities\/a093e9b...",
"name": "Microsoft"
},
{
"readLink": "https:\/\/api.cognitive.microsoft.com\/api\/v7\/entities\/cf3abf7d-e379-...",
"name": "Windows Azure"
},
{
"readLink": "https:\/\/api.cognitive.microsoft.com\/api\/v7\/entities\/9cdd061c-1fae-d0...",
"name": "Cloud"
}
],
"provider": [
{
"_type": "Organization",
"name": "Contoso"
}
],
"datePublished": "2017-09-21T09:01:00.0000000Z",
"category": "ScienceAndTechnology"
}
]
}