Schnellstart: Senden einer Suchanforderung an die Bing-Entitätssuche-REST-API mithilfe von Java
Warnung
Am 30. Oktober 2020 wurden die Bing-Suche-APIs aus den Azure KI Services in die Bing-Suchdienste verschoben. Diese Dokumentation wird nur zu Referenzzwecken 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.
Verwenden Sie diese Schnellstartanleitung, um die Bing-Entitätssuche-API zum ersten Mal aufzurufen und die JSON-Antwort anzuzeigen. Diese einfache Java-Anwendung sendet eine Nachrichtensuchabfrage an die API und zeigt die Antwort an.
Die Anwendung ist zwar in Java geschrieben, an sich ist die API aber ein RESTful-Webdienst und mit den meisten Programmiersprachen kompatibel.
Voraussetzungen
- Das Java Development Kit (JDK).
- Die Gson-Bibliothek.
Erstellen einer Azure-Ressource
Beginnen Sie mit der Verwendung der Bing-Entitätssuche-API, indem Sie eine der folgenden Azure-Ressourcen erstellen.
Ressource für die Bing-Entitätssuche
- Verfügbar über das Azure-Portal, bis Sie die Ressource löschen.
- Verwenden Sie den Tarif „Free“, um den Dienst zu testen, und führen Sie später für die Produktion ein Upgrade auf einen kostenpflichtigen Tarif durch.
- Die Bing-Entitätssuche wird auch in kostenpflichtigen Tarifen der Bing-Suche v7-Ressource angeboten.
Ressource für mehrere Dienste
- Verfügbar über das Azure-Portal, bis Sie die Ressource löschen.
- Verwenden Sie in allen Azure KI Services-Instanzen denselben Schlüssel und Endpunkt für Ihre Anwendungen.
Erstellen und Initialisieren eines Projekts
Erstellen Sie in Ihrer bevorzugten IDE oder in Ihrem bevorzugten Editor ein neues Java-Projekt, und importieren Sie die folgenden Bibliotheken:
import java.io.*; import java.net.*; import java.util.*; 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; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonObject; import com.google.gson.JsonParser;
Erstellen Sie in einer neuen Klasse Variablen für den API-Endpunkt, Ihren Abonnementschlüssel und eine Suchabfrage. Sie können den globalen Endpunkt im folgenden Code oder den Endpunkt der benutzerdefinierten Unterdomäne verwenden, der im Azure-Portal für Ihre Ressource angezeigt wird.
public class EntitySearch { static String subscriptionKey = "ENTER KEY HERE"; static String host = "https://api.bing.microsoft.com"; static String path = "/v7.0/search"; static String mkt = "en-US"; static String query = "italian restaurant near me"; //...
Erstellen einer Zeichenfolge für die Suchanforderung
Erstellen Sie eine Funktion namens
search()
, die eine JSON-String
zurückgibt. Führen Sie eine URL-Codierung für Ihre Suchabfrage aus, und fügen Sie sie mit&q=
einer Parameterzeichenfolge hinzu. Fügen Sie der Parameterzeichenfolge mit?mkt=
Ihren Markt hinzu.Erstellen Sie ein URL-Objekt mit Ihrem Host, Pfad und Parameterzeichenfolgen.
//... public static String search () throws Exception { String encoded_query = URLEncoder.encode (query, "UTF-8"); String params = "?mkt=" + mkt + "&q=" + encoded_query; URL url = new URL (host + path + params); //...
Senden einer Suchanforderung und Erhalten einer Antwort
In der oben erstellten Funktion
search()
erstellen Sie miturl.openCOnnection()
ein neuesHttpsURLConnection
-Objekt. Legen Sie die Anforderungsmethode aufGET
, und fügen Sie Ihren Abonnementschlüssel dem HeaderOcp-Apim-Subscription-Key
hinzu.//... HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("Ocp-Apim-Subscription-Key", subscriptionKey); connection.setDoOutput(true); //...
Erstellen Sie ein neues
StringBuilder
-Element. Verwenden Sie bei der Instanziierung vonBufferedReader
ein neuesInputStreamReader
-Element als Parameter, um die API-Antwort zu lesen.//... StringBuilder response = new StringBuilder (); BufferedReader in = new BufferedReader( new InputStreamReader(connection.getInputStream())); //...
Erstellen Sie ein
String
-Objekt zum Speichern der Antwort vonBufferedReader
. Durchlaufen Sie es, und fügen Sie die einzelnen Zeilen an die Zeichenfolge an. Schließen Sie dann den Leser, und geben Sie die Antwort zurück.String line; while ((line = in.readLine()) != null) { response.append(line); } in.close(); return response.toString();
Formatieren der JSON-Antwort
Erstellen Sie eine neue Funktion namens
prettify
, um die JSON-Antwort zu formatieren. Erstellen Sie ein neuesJsonParser
-Element, rufen Sieparse()
für den JSON-Text auf, und speichern Sie es als JSON-Objekt.Erstellen Sie mithilfe der Gson-Bibliothek ein neues
GsonBuilder()
-Element, verwenden SiesetPrettyPrinting().create()
zum Formatieren des JSON-Objekts, und geben Sie es dann zurück.//... 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); } //...
Aufrufen der Suchfunktion
Rufen Sie in der Main-Methode Ihres Projekts
search()
auf, und verwenden Sieprettify()
zum Formatieren des Texts.public static void main(String[] args) { try { String response = search (); System.out.println (prettify (response)); } catch (Exception e) { System.out.println (e); } }
JSON-Beispielantwort
Es wird eine erfolgreiche Antwort im JSON-Format zurückgegeben, wie im folgenden Beispiel gezeigt:
{
"_type": "SearchResponse",
"queryContext": {
"originalQuery": "italian restaurant near me",
"askUserForLocation": true
},
"places": {
"value": [
{
"_type": "LocalBusiness",
"webSearchUrl": "https://www.bing.com/search?q=sinful+bakery&filters=local...",
"name": "Liberty's Delightful Sinful Bakery & Cafe",
"url": "https://www.contoso.com/",
"entityPresentationInfo": {
"entityScenario": "ListItem",
"entityTypeHints": [
"Place",
"LocalBusiness"
]
},
"address": {
"addressLocality": "Seattle",
"addressRegion": "WA",
"postalCode": "98112",
"addressCountry": "US",
"neighborhood": "Madison Park"
},
"telephone": "(800) 555-1212"
},
. . .
{
"_type": "Restaurant",
"webSearchUrl": "https://www.bing.com/search?q=Pickles+and+Preserves...",
"name": "Munson's Pickles and Preserves Farm",
"url": "https://www.princi.com/",
"entityPresentationInfo": {
"entityScenario": "ListItem",
"entityTypeHints": [
"Place",
"LocalBusiness",
"Restaurant"
]
},
"address": {
"addressLocality": "Seattle",
"addressRegion": "WA",
"postalCode": "98101",
"addressCountry": "US",
"neighborhood": "Capitol Hill"
},
"telephone": "(800) 555-1212"
},
. . .
]
}
}