Snabbstart: Sök efter bilder med hjälp av REST API för bildsökning i Bing och C#Quickstart: Search for images using the Bing Image Search REST API and C#

Använd den här snabbstarten till att börja skicka sökbegäranden till API:et för bildsökning i Bing.Use this quickstart to start sending search requests to the Bing Image Search API. C#-appen skickar en sökfråga till API:et och visar webbadressen till den första bilden i resultatet.This C# application sends a search query to the API, and displays the URL of the first image in the results. Även om det här programmet är skrivet i C#, är API:et en RESTful-webbtjänst som är kompatibel med de flesta programmeringsspråk.While this application is written in C#, the API is a RESTful web service compatible with most programming languages.

Källkoden för det här exemplet finns på GitHub tillsammans med ytterligare felhantering och kommentarer.The source code for this sample is available on GitHub with additional error handling and annotations.

FörutsättningarPrerequisites

Du måste ha ett Cognitive Services-API-konto med åtkomst till API:er för Bing-sökresultat.You must have a Cognitive Services API account with access to the Bing Search APIs. Om du inte har någon Azure-prenumeration kan du skapa ett konto kostnadsfritt.If you don't have an Azure subscription, you can create an account for free. Innan du fortsätter behöver du den åtkomstnyckel som du fick när du aktiverade din kostnadsfria utvärderingsversion eller en betald prenumerationsnyckel från instrumentpanelen i Azure.Before continuing, You will need the access key provided after activating your free trial, or a paid subscription key from your Azure dashboard.

Skapa och initiera ett projektCreate and initialize a project

  1. skapa en ny konsollösning med namnet BingSearchApisQuickStart i Visual Studio.create a new console solution named BingSearchApisQuickStart in Visual Studio. Lägg sedan till följande namnrymder i huvudkodfilen.Then add the following namespaces into the main code file.

    using System;
    using System.Net;
    using System.IO;
    using System.Collections.Generic;
    using Newtonsoft.Json.Linq;
    
  2. Skapa variabler för API-slutpunkten, din prenumerationsnyckel och sökvillkor.Create variables for the API endpoint, your subscription key, and search term.

    //...
    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";
    //...
    

Skapa en struct för att formatera sökresultaten från Bing-bildsökningenCreate a struct to format the Bing Image Search response

Definiera en SearchResult-struct som ska innehålla bildsökningsresultatet och JSON-rubrikinformation.Define a SearchResult struct to contain the image search results, and JSON header information.

    namespace BingSearchApisQuickstart
    {
        class Program
        {
        //...
            struct SearchResult
            {
                public String jsonResult;
                public Dictionary<String, String> relevantHeaders;
            }
//...

Skapa en metod för att skicka sökförfrågningarCreate a method to send search requests

Skapa en metod med namnet BingImageSearch för att utföra anrop till API:et och ange returtypen som SearchResult-structen som skapades tidigare.Create a method named BingImageSearch to perform the call to the API, and set the return type to the SearchResult struct created earlier.

//...
namespace BingSearchApisQuickstart
{
    //...
    class Program
    {
        //...
        static SearchResult BingImageSearch(string searchTerm)
        {
        }
//...

Skapa och hantera en bildsökningsbegäranCreate and handle an image search request

Utför följande steg i metoden BingImageSearch.In the BingImageSearch method, perform the following steps.

  1. Konstruera URI för sökbegäran.Construct the URI for the search request. Sökordet SearchTerm måste vara formaterat innan det läggs till i strängen.The search term SearchTerm must be formatted before being appended to the string.

    static SearchResult BingImageSearch(string SearchTerm){
    
        var uriQuery = uriBase + "?q=" + Uri.EscapeDataString(SearchTerm);
    //...
    
  2. Skicka webbegäran och få svaret som en JSON-sträng.Send the web request and get the response as a JSON string.

    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();
    
  3. Skapa sökresultatsobjektet och extrahera Bing-HTTP-rubriker.Create the search result object, and extract the Bing HTTP headers. Returnera seda searchResult.Then return 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;
    

Bearbeta och visa svaretProcess and view the response

  1. Anropa BingImageSearch() i huvudmetoden och lagra det returnerade svaret.In the main method, call BingImageSearch() and store the returned response. Deserialisera sedan JSON till ett objekt.Then deserialize the JSON into an object.

    SearchResult result = BingImageSearch(searchTerm);
    //deserialize the JSON response from the Bing Image Search API
    dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(result.jsonResult);
    
  2. Hämta den första returnerade bilden från jsonObj och skriv ut rubriken och en URL till bilden.Get the first returned image from jsonObj, and print out the title and a URL to the image.

    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");
    

Exempel på JSON-svarExample JSON response

Svar från API för bildsökning i Bing returneras som JSON.Responses from the Bing Image Search API are returned as JSON. Det här exempelsvaret har trunkerats för att visa ett enskilt resultat.This sample response has been truncated to show a single result.

{
"_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"
    }]
}

Nästa stegNext steps

Se ocksåSee also