Snabbstart: Använd Java för att söka på webben med Webbsökning i Bing REST API, en Azure-tjänst för inlärningQuickstart: Use Java to search the web with the Bing Web Search REST API, an Azure cognitive service

I den här snabb starten ska du använda ett Java-program för att göra ditt första anrop till API för webbsökning i Bing och ta emot JSON-svaret.In this quickstart, you'll use a Java application to make your first call to the Bing Web Search API and receive the JSON response. Java-programmet skickar en Sök förfrågan till API: et och visar svaret.This Java application sends a search request to the API, and shows the response. Även om det här programmet är skrivet i Java, är API:n en RESTful-webbtjänst som är kompatibel med de flesta programmeringsspråk.While this application is written in Java, the API is a RESTful Web service compatible with most programming languages.

FörutsättningarPrerequisites

Här följer några saker som du behöver innan du kör den här snabbstarten:Here are a few things that you'll need before running this quickstart:

Den här snabbstarten kräver ett Azure Cognitive Services-konto med API:er för Bing-sökresultat.This quickstart requires an Azure Cognitive Services account with Bing Search APIs. Om du inte har ett konto kan du använda den kostnadsfria utvärderingsversionen för att hämta en prenumerationsnyckel.If you don't have an account, you can use the free trial to get a subscription key.

Skapa ett projekt och importera beroendenCreate a project and import dependencies

Skapa ett nytt Java-projekt i valfri IDE eller redigeringsprogram och importera följande bibliotek.Create a new Java project in your favorite IDE or editor and import the following libraries. Gson krävs för att konvertera Java-objekt till JSON.Gson is required to convert Java Objects into JSON.

import java.net.*;
import java.util.*;
import java.io.*;
import javax.net.ssl.HttpsURLConnection;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

Deklarera Gson i Maven POM-filenDeclare Gson in the Maven POM file

Om du använder Maven deklarerar du Gson i POM.xml.If you're using Maven, declare Gson in the POM.xml. Hoppa över det här steget om du har installerat Gson lokalt.Skip this step if you've installed Gson locally.

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.5</version>
</dependency>

Deklarera klassen BingWebSearchDeclare the BingWebSearch class

Deklarera klassen BingWebSearch.Declare the BingWebSearch class. Den innehåller största delen av den kod vi granskar i den här snabbstarten, inklusive main-metoden.It will include most of the code we review in this quickstart including the main method.

public class BingWebSearch {

// The code in the following sections goes here.

}

Definiera variablerDefine variables

Den här koden ställer in subscriptionKey, host, path och searchTerm.This code sets the subscriptionKey, host, path, and searchTerm. Bekräfta att slutpunkten är korrekt och ersätt värdet subscriptionKey med en giltig prenumerationsnyckel från ditt Azure-konto.Confirm that the endpoint is correct and replace the subscriptionKey value with a valid subscription key from your Azure account. Du kan anpassa sökfrågan genom att ersätta värdet för searchTerm.Feel free to customize the search query by replacing the value for searchTerm. Kom ihåg att lägga till den här BingWebSearch koden i klassen som anges ovan.Remember to add this code to the BingWebSearch class as noted above.

// Enter a valid subscription key.
static String subscriptionKey = "enter key here";

/*
 * If you encounter unexpected authorization errors, double-check these values
 * against the endpoint for your Bing Web search instance in your Azure
 * dashboard.
 */
static String host = "https://api.cognitive.microsoft.com";
static String path = "/bing/v7.0/search";
static String searchTerm = "Microsoft Cognitive Services";

Skapa en begäranConstruct a request

Den här metoden, som finns i klassen BingWebSearch, konstruerar url, tar emot och parsar svaret samt extraherar Bing-relaterade HTTP-huvuden.This method, which lives in the BingWebSearch class, constructs the url, receives and parses the response, and extracts Bing-related HTTP headers.

public static SearchResults SearchWeb (String searchQuery) throws Exception {
    // Construct the URL.
    URL url = new URL(host + path + "?q=" +  URLEncoder.encode(searchQuery, "UTF-8"));

    // Open the connection.
    HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();
    connection.setRequestProperty("Ocp-Apim-Subscription-Key", subscriptionKey);

    // Receive the JSON response body.
    InputStream stream = connection.getInputStream();
    String response = new Scanner(stream).useDelimiter("\\A").next();

    // Construct the result object.
    SearchResults results = new SearchResults(new HashMap<String, String>(), response);

    // Extract Bing-related HTTP headers.
    Map<String, List<String>> headers = connection.getHeaderFields();
    for (String header : headers.keySet()) {
        if (header == null) continue;      // may have null key
        if (header.startsWith("BingAPIs-") || header.startsWith("X-MSEdge-")){
            results.relevantHeaders.put(header, headers.get(header).get(0));
        }
    }
    stream.close();
    return results;
}

Hantera svaretHandle the response

Använd Gson för att parsa och omserialisera svaret.Use Gson to parse and reserialize the response.

public static String prettify(String json_text) {
    JsonParser parser = new JsonParser();
    JsonObject json = parser.parse(json_text).getAsJsonObject();
    Gson gson = new GsonBuilder().setPrettyPrinting().create();
    return gson.toJson(json);
}

Deklarera main-metodenDeclare the main method

Den här metoden krävs och det är den första metoden som anropas när programmet startas.This method is required and is the first method invoked when the program is started. I det här programmet innehåller den kod som verifierar subscriptionKey, gör en begäran och skriver ut JSON-svaret.In this application, it includes code that validates the subscriptionKey, makes a request, and prints the JSON response.

public static void main (String[] args) {
    // Confirm the subscriptionKey is valid.
    if (subscriptionKey.length() != 32) {
        System.out.println("Invalid Bing Search API subscription key!");
        System.out.println("Please paste yours into the source code.");
        System.exit(1);
    }

    // Call the SearchWeb method and print the response.
    try {
        System.out.println("Searching the Web for: " + searchTerm);
        SearchResults result = SearchWeb(searchTerm);
        System.out.println("\nRelevant HTTP Headers:\n");
        for (String header : result.relevantHeaders.keySet())
        System.out.println(header + ": " + result.relevantHeaders.get(header));
        System.out.println("\nJSON Response:\n");
        System.out.println(prettify(result.jsonResponse));
    }
    catch (Exception e) {
        e.printStackTrace(System.out);
        System.exit(1);
    }
}

Skapa en containerklass för sökresultatCreate a container class for search results

Containerklassen SearchResults är utanför klassen BingWebSearch.The SearchResults container class is outside of the BingWebSearch class. Den innehåller relevanta rubriker och JSON-data för svaret.It includes relevant headers and JSON data for the response.

class SearchResults{
    HashMap<String, String> relevantHeaders;
    String jsonResponse;
    SearchResults(HashMap<String, String> headers, String json) {
        relevantHeaders = headers;
        jsonResponse = json;
    }
}

Färdigställa alltPut it all together

Det sista steget är att kompilera koden och köra den!The last step is to compile your code and run it! Nedan visas kommandona:Here are the commands:

javac BingWebSearch.java -classpath ./gson-2.8.5.jar -encoding UTF-8
java -cp ./gson-2.8.5.jar BingWebSearch

Om du vill jämföra din kod med vår finns exempelkoden på GitHub.If you'd like to compare your code with ours, sample code is available on GitHub.

ExempelsvarSample response

Svar från API för webbsökning i Bing returneras som JSON.Responses from the Bing Web 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": "SearchResponse",
  "queryContext": {
    "originalQuery": "Microsoft Cognitive Services"
  },
  "webPages": {
    "webSearchUrl": "https://www.bing.com/search?q=Microsoft+cognitive+services",
    "totalEstimatedMatches": 22300000,
    "value": [
      {
        "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.0",
        "name": "Microsoft Cognitive Services",
        "url": "https://www.microsoft.com/cognitive-services",
        "displayUrl": "https://www.microsoft.com/cognitive-services",
        "snippet": "Knock down barriers between you and your ideas. Enable natural and contextual interaction with tools that augment users' experiences via the power of machine-based AI. Plug them in and bring your ideas to life.",
        "deepLinks": [
          {
            "name": "Face API",
            "url": "https://azure.microsoft.com/services/cognitive-services/face/",
            "snippet": "Add facial recognition to your applications to detect, identify, and verify faces using a Face API from Microsoft Azure. ... Cognitive Services; Face API;"
          },
          {
            "name": "Text Analytics",
            "url": "https://azure.microsoft.com/services/cognitive-services/text-analytics/",
            "snippet": "Cognitive Services; Text Analytics API; Text Analytics API . Detect sentiment, ... you agree that Microsoft may store it and use it to improve Microsoft services, ..."
          },
          {
            "name": "Computer Vision API",
            "url": "https://azure.microsoft.com/services/cognitive-services/computer-vision/",
            "snippet": "Extract the data you need from images using optical character recognition and image analytics with Computer Vision APIs from Microsoft Azure."
          },
          {
            "name": "Emotion",
            "url": "https://www.microsoft.com/cognitive-services/en-us/emotion-api",
            "snippet": "Cognitive Services Emotion API - microsoft.com"
          },
          {
            "name": "Bing Speech API",
            "url": "https://azure.microsoft.com/services/cognitive-services/speech/",
            "snippet": "Add speech recognition to your applications, including text to speech, with a speech API from Microsoft Azure. ... Cognitive Services; Bing Speech API;"
          },
          {
            "name": "Get Started for Free",
            "url": "https://azure.microsoft.com/services/cognitive-services/",
            "snippet": "Add vision, speech, language, and knowledge capabilities to your applications using intelligence APIs and SDKs from Cognitive Services."
          }
        ]
      }
    ]
  },
  "relatedSearches": {
    "id": "https://api.cognitive.microsoft.com/api/v7/#RelatedSearches",
    "value": [
      {
        "text": "microsoft bot framework",
        "displayText": "microsoft bot framework",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+bot+framework"
      },
      {
        "text": "microsoft cognitive services youtube",
        "displayText": "microsoft cognitive services youtube",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+cognitive+services+youtube"
      },
      {
        "text": "microsoft cognitive services search api",
        "displayText": "microsoft cognitive services search api",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+cognitive+services+search+api"
      },
      {
        "text": "microsoft cognitive services news",
        "displayText": "microsoft cognitive services news",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+cognitive+services+news"
      },
      {
        "text": "ms cognitive service",
        "displayText": "ms cognitive service",
        "webSearchUrl": "https://www.bing.com/search?q=ms+cognitive+service"
      },
      {
        "text": "microsoft cognitive services text analytics",
        "displayText": "microsoft cognitive services text analytics",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+cognitive+services+text+analytics"
      },
      {
        "text": "microsoft cognitive services toolkit",
        "displayText": "microsoft cognitive services toolkit",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+cognitive+services+toolkit"
      },
      {
        "text": "microsoft cognitive services api",
        "displayText": "microsoft cognitive services api",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+cognitive+services+api"
      }
    ]
  },
  "rankingResponse": {
    "mainline": {
      "items": [
        {
          "answerType": "WebPages",
          "resultIndex": 0,
          "value": {
            "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.0"
          }
        }
      ]
    },
    "sidebar": {
      "items": [
        {
          "answerType": "RelatedSearches",
          "value": {
            "id": "https://api.cognitive.microsoft.com/api/v7/#RelatedSearches"
          }
        }
      ]
    }
  }
}

Nästa stegNext steps

Se ocksåSee also