Rövid útmutató: Keresési kérés küldése a Bing Entity Search REST API-nak a C használatával#
Figyelmeztetés
2020. október 30-án a Bing Search API-k átkerültek az Azure AI-szolgáltatásokból a Bing Search Servicesbe. Ez a dokumentáció csak referenciaként szolgál. A frissített dokumentációt a Bing search API dokumentációjában találja. Az új Azure-erőforrások Bing-kereséshez való létrehozásával kapcsolatos útmutatásért lásd: Bing Search-erőforrás létrehozása a Azure Marketplace keresztül.
Ezzel a rövid útmutatóval kezdeményezheti első hívását a Bing Entity Search API-ra, és megtekintheti a JSON-választ. Ez az egyszerű C#-alkalmazás hírkeresési lekérdezést küld az API-nak, és megjeleníti a választ. Az alkalmazás forráskódja elérhető a GitHubon.
Bár ez az alkalmazás C#-ban van megírva, az API egy RESTful webszolgáltatás, amely kompatibilis a legtöbb programozási nyelvvel.
Előfeltételek
- A Visual Studio 2017 vagy újabb verzióinak bármely kiadása.
- Ha Linuxot vagy MacOS-t használ, kövesse ezt a rövid útmutatót a Visual Studio Code és a .NET Core használatával.
- Ingyenes Azure-fiók
Azure-erőforrás létrehozása
Kezdje el használni a Bing Entity Search API-t az alábbi Azure-erőforrások egyikének létrehozásával.
Bing Entity Search-erőforrás
- Az Azure Portal keresztül érhető el, amíg el nem törli az erőforrást.
- Az ingyenes tarifacsomag használatával próbálja ki a szolgáltatást, és frissítsen később egy fizetős szintre éles környezetben.
- A Bing Entity Search a Bing Search v7-erőforrás fizetős szintjeiben is elérhető.
Többszolgáltatásos erőforrás
- Az Azure Portal keresztül érhető el, amíg el nem törli az erőforrást.
- Használja ugyanazt a kulcsot és végpontot az alkalmazásokhoz több Azure AI-szolgáltatásban.
Projekt létrehozása és inicializálása
Hozzon létre egy új C#-konzolmegoldást a Visual Studióban.
Adja hozzá a Newtonsoft.Json NuGet-csomagot.
- Kattintson a jobb gombbal a projektre a Megoldáskezelő.
- Válassza a NuGet-csomagok kezelése lehetőséget.
- Keresse meg és válassza a Newtonsoft.Json lehetőséget, majd telepítse a csomagot.
Ezután adja hozzá a következő névtereket a fő kódfájlhoz:
using Newtonsoft.Json; using System; using System.Net.Http; using System.Text;
Hozzon létre egy új osztályt, és adjon hozzá változókat az API-végponthoz, az előfizetési kulcshoz és a keresendő lekérdezéshez. A globális végpontot az alábbi kódban használhatja, vagy használhatja az erőforráshoz tartozó Azure Portal megjelenő egyéni altartományvégpontot.
namespace EntitySearchSample { class Program { static string host = "https://api.bing.microsoft.com"; static string path = "/v7.0/search"; static string market = "en-US"; // NOTE: Replace this example key with a valid subscription key. static string key = "ENTER YOUR KEY HERE"; static string query = "italian restaurant near me"; //... } }
Kérés küldése és az API-válasz lekérése
Az osztályon belül hozzon létre egy nevű függvényt
Search()
. Ebben a függvényben hozzon létre egy újHttpClient
objektumot, és adja hozzá az előfizetési kulcsot aOcp-Apim-Subscription-Key
fejléchez.Hozza létre a kérés URI-ját a gazdagép és az elérési út kombinálásával. Ezután adja hozzá a piacát és az URL-kódolást a lekérdezéshez.
Várjon
client.GetAsync()
, hogy http-választ kapjon, majd tárolja a JSON-választ a várakozássalReadAsStringAsync()
.Formázza a JSON-sztringet és
JsonConvert.DeserializeObject()
nyomtassa ki a konzolra.async static void Search() { //... HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", key); string uri = host + path + "?mkt=" + market + "&q=" + System.Net.WebUtility.UrlEncode(query); HttpResponseMessage response = await client.GetAsync(uri); string contentString = await response.Content.ReadAsStringAsync(); dynamic parsedJson = JsonConvert.DeserializeObject(contentString); Console.WriteLine(parsedJson); }
Main()
Az alkalmazás metódusában hívja meg a függvénytSearch()
.static void Main(string[] args) { Search(); Console.ReadLine(); }
Példa JSON-válaszra
A rendszer JSON formátumban ad vissza egy sikeres választ a következő példában látható módon:
{
"_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"
},
. . .
]
}
}