Schnellstart: Suchen nach Bildern mithilfe der Bing Image Search-REST-API und C#
Warnung
Am 30. Oktober 2020 wurden die Bing Search-APIs von Azure AI-Diensten zu Bing Search Services verschoben. Diese Dokumentation wird nur zur Referenz bereitgestellt. Eine aktualisierte Dokumentation finden Sie in der Dokumentation zu den Bing-Suche-APIs. Anweisungen zum Erstellen neuer Azure-Ressourcen für die Bing-Suche finden Sie unter Erstellen einer Ressource für die Bing-Suche über Azure Marketplace.
In dieser Schnellstartanleitung erfahren Sie, wie Sie Suchanforderungen an die Bing Image Search-API senden. Diese C#-Anwendung sendet eine Suchabfrage an die API und zeigt die URL des ersten Bilds in den Ergebnissen an. Obwohl diese Anwendung in C# geschrieben ist, ist die API ein RESTful-Webdienst, der mit den meisten Programmiersprachen kompatibel ist.
Voraussetzungen
- Jede Edition von Visual Studio 2017 oder höher.
- Das Json.NET Framework, das als NuGet-Paket verfügbar ist.
- Wenn Sie Linux/MacOS verwenden, kann diese Anwendung mit Monoausgeführt werden.
Erstellen und Initialisieren eines Projekts
Erstellen Sie eine neue Konsolenlösung namens
BingSearchApisQuickStart
in Visual Studio. Fügen Sie dann der Hauptcodedatei die folgenden Namespaces hinzu:using System; using System.Net; using System.IO; using System.Collections.Generic; using Newtonsoft.Json.Linq;
Erstellen Sie Variablen für den API-Endpunkt, Ihren Abonnementschlüssel und den Suchbegriff. Für
uriBase
können Sie den globalen Endpunkt im folgenden Code verwenden oder die benutzerdefinierte Unterdomäne Endpunkt verwenden, der im Azure-Portal für Ihre Ressource angezeigt wird.//... namespace BingSearchApisQuickstart { class Program { // Replace the this string with your valid access key. const string subscriptionKey = "enter your key here"; const string uriBase = "https://api.cognitive.microsoft.com/bing/v7.0/images/search"; const string searchTerm = "tropical ocean"; //...
Erstellen einer Struktur zum Formatieren der Bing-Bildsuche-Antwort
Definieren Sie eine SearchResult
Struktur, um die Bildsuchergebnisse und JSON-Headerinformationen zu enthalten.
namespace BingSearchApisQuickstart
{
class Program
{
//...
struct SearchResult
{
public String jsonResult;
public Dictionary<String, String> relevantHeaders;
}
//...
Erstellen einer Methode zum Senden von Suchanforderungen
Erstellen Sie eine Methode namens BingImageSearch
, um den Aufruf der API auszuführen, und legen Sie den Rückgabetyp auf die zuvor erstellte SearchResult
Struktur fest.
//...
namespace BingSearchApisQuickstart
{
//...
class Program
{
//...
static SearchResult BingImageSearch(string searchTerm)
{
}
//...
Erstellen und Verarbeiten einer Bildsuchanforderung
Führen Sie in der BingImageSearch
-Methode die folgenden Schritte aus:
Erstellen Sie den URI für die Suchanforderung. Formatieren Sie den
SearchTerm
Suchbegriff, bevor Sie ihn an die Zeichenfolge anfügen.static SearchResult BingImageSearch(string SearchTerm){ var uriQuery = uriBase + "?q=" + Uri.EscapeDataString(SearchTerm); //...
Senden Sie die Webanforderung, und rufen Sie die Antwort als JSON-Zeichenfolge ab.
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();
Erstellen Sie das Suchergebnisobjekt, und extrahieren Sie die Bing-HTTP-Header. Geben Sie dann
searchResult
zurück.// 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;
Antwort verarbeiten und anzeigen
Rufen Sie in der Hauptmethode
BingImageSearch()
auf, und speichern Sie die zurückgegebene Antwort. Deserialisieren Sie dann den JSON-Code in einem Objekt.SearchResult result = BingImageSearch(searchTerm); //deserialize the JSON response from the Bing Image Search API dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(result.jsonResult);
Rufen Sie das erste zurückgegebene Bild von
jsonObj
ab, und drucken Sie den Titel und eine URL zum Bild aus.var firstJsonObj = jsonObj["value"][0]; Console.WriteLine("Title for the first image result: " + firstJsonObj["name"]+"\n"); //After running the application, copy the output URL into a browser to see the image. Console.WriteLine("URL for the first image result: " + firstJsonObj["webSearchUrl"]+"\n");
Beispiel für JSON-Antwort
Antworten aus der Bing Image Search-API werden als JSON zurückgegeben. Diese Beispielantwort wurde abgeschnitten, um ein einzelnes Ergebnis anzuzeigen.
{
"_type":"Images",
"instrumentation":{
"_type":"ResponseInstrumentation"
},
"readLink":"images\/search?q=tropical ocean",
"webSearchUrl":"https:\/\/www.bing.com\/images\/search?q=tropical ocean&FORM=OIIARP",
"totalEstimatedMatches":842,
"nextOffset":47,
"value":[
{
"webSearchUrl":"https:\/\/www.bing.com\/images\/search?view=detailv2&FORM=OIIRPO&q=tropical+ocean&id=8607ACDACB243BDEA7E1EF78127DA931E680E3A5&simid=608027248313960152",
"name":"My Life in the Ocean | The greatest WordPress.com site in ...",
"thumbnailUrl":"https:\/\/tse3.mm.bing.net\/th?id=OIP.fmwSKKmKpmZtJiBDps1kLAHaEo&pid=Api",
"datePublished":"2017-11-03T08:51:00.0000000Z",
"contentUrl":"https:\/\/mylifeintheocean.files.wordpress.com\/2012\/11\/tropical-ocean-wallpaper-1920x12003.jpg",
"hostPageUrl":"https:\/\/mylifeintheocean.wordpress.com\/",
"contentSize":"897388 B",
"encodingFormat":"jpeg",
"hostPageDisplayUrl":"https:\/\/mylifeintheocean.wordpress.com",
"width":1920,
"height":1200,
"thumbnail":{
"width":474,
"height":296
},
"imageInsightsToken":"ccid_fmwSKKmK*mid_8607ACDACB243BDEA7E1EF78127DA931E680E3A5*simid_608027248313960152*thid_OIP.fmwSKKmKpmZtJiBDps1kLAHaEo",
"insightsMetadata":{
"recipeSourcesCount":0,
"bestRepresentativeQuery":{
"text":"Tropical Beaches Desktop Wallpaper",
"displayText":"Tropical Beaches Desktop Wallpaper",
"webSearchUrl":"https:\/\/www.bing.com\/images\/search?q=Tropical+Beaches+Desktop+Wallpaper&id=8607ACDACB243BDEA7E1EF78127DA931E680E3A5&FORM=IDBQDM"
},
"pagesIncludingCount":115,
"availableSizesCount":44
},
"imageId":"8607ACDACB243BDEA7E1EF78127DA931E680E3A5",
"accentColor":"0050B2"
}]
}