Snabbstart: Använda Java för att söka på webben med REST API för webbsökning i Bing, en Azure Cognitive Service
Varning
Den 30 oktober 2020 flyttades Bing-sökning-API:erna från Azure AI-tjänster till Bing-sökning Services. Den här dokumentationen tillhandahålls endast som referens. Uppdaterad dokumentation finns i dokumentationen för API:et för Bing-sökning. Anvisningar om hur du skapar nya Azure-resurser för Bing-sökning finns i Skapa en Bing-sökning resurs via Azure Marketplace.
I den här snabbstarten använder du ett Java-program för att göra ditt första anrop till API:et för webbsökning i Bing. Det här Java-programmet skickar en sökbegäran till API:et och visar JSON-svaret. Även om det här programmet är skrivet i Java är API:et en RESTful-webbtjänst som är kompatibel med de flesta programmeringsspråk.
Förutsättningar
Här följer några saker som du behöver innan du kör den här snabbstarten:
- JDK 7 eller 8
- Gson-bibliotek
- En prenumerationsnyckel
Skapa en Azure-resurs
Börja använda API:et för webbsökning i Bing genom att skapa någon av följande Azure-resurser:
- Tillgänglig via Azure Portal tills du tar bort resursen.
- Använd den kostnadsfria prisnivån för att prova tjänsten och uppgradera senare till en betald nivå för produktion.
- Tillgänglig via Azure Portal tills du tar bort resursen.
- Använd samma nyckel och slutpunkt för dina program i flera Azure AI-tjänster.
Skapa ett projekt och importera beroenden
Skapa ett nytt Java-projekt i valfri IDE eller redigeringsprogram och importera följande bibliotek. Gson krävs för att konvertera Java-objekt till 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-filen
Om du använder Maven deklarerar du Gson i POM.xml. Hoppa över det här steget om du har installerat Gson lokalt.
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
Deklarera klassen BingWebSearch
Deklarera klassen BingWebSearch
. Den innehåller merparten av den kod som vi granskar i den här snabbstarten main()
, inklusive metoden .
public class BingWebSearch {
// The code in the following sections goes here.
}
Definiera variabler
Följande kod anger subscriptionKey
, host
, path
och searchTerm
. Lägg till den här koden i klassen BingWebSearch
som beskrivs i föregående avsnitt:
För värdet
host
kan du använda den globala slutpunkten i följande kod eller använda den anpassade underdomänslutpunkten som visas i Azure Portal för din resurs.Ersätt värdet
subscriptionKey
med en giltig prenumerationsnyckel från ditt Azure-konto.Du kan också anpassa sökfrågan genom att ersätta värdet för
searchTerm
.
// 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äran
Metoden SearchWeb()
, som ingår i BingWebSearch
klassen , konstruerar url
, tar emot och parsar svaret och extraherar Bing-relaterade HTTP-huvuden.
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 svaret
Använd Gson för att parsa och omserialisera svaret.
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-metoden
Metoden main()
krävs och är den första metoden som anropas när du startar programmet. I det här programmet innehåller den kod som validerar subscriptionKey
, gör en begäran och sedan skriver ut JSON-svaret.
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ökresultat
Containerklassen SearchResults
definieras utanför BingWebSearch
klassen . Den innehåller relevanta rubriker och JSON-data för svaret.
class SearchResults{
HashMap<String, String> relevantHeaders;
String jsonResponse;
SearchResults(HashMap<String, String> headers, String json) {
relevantHeaders = headers;
jsonResponse = json;
}
}
Färdigställa allt
Det sista steget är att kompilera koden och köra den. Använd följande kommandon:
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.
Exempel på JSON-svar
Svar från API för webbsökning i Bing returneras som JSON. Det här exempelsvaret har trunkerats för att visa ett enskilt resultat.
{
"_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",
"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 service from Microsoft Azure. ... Cognitive Services; Face service;"
},
{
"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/products/ai-services?activetab=pivot:visiontab",
"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"
}
}
]
}
}
}