Hızlı Başlangıç: C# ve Bing Haber Arama REST API'sini kullanarak haber arama
Uyarı
30 Ekim 2020'de Bing Arama API'leri Azure yapay zeka hizmetlerinden Bing Arama Hizmetlerine taşındı. Bu belgeler yalnızca başvuru için sağlanır. Güncelleştirilmiş belgeler için Bing arama API'sinin belgelerine bakın. Bing araması için yeni Azure kaynakları oluşturma yönergeleri için bkz. Azure Market aracılığıyla Bing Arama kaynağı oluşturma.
Bing Haber Arama API'sine ilk çağrınızı yapmak için bu hızlı başlangıcı kullanın. Bu basit C# uygulaması API'ye bir haber arama sorgusu gönderir ve JSON yanıtını görüntüler.
Bu uygulama C# dilinde yazılmış olsa da, API çoğu programlama diliyle uyumlu bir RESTful Web hizmetidir.
Bu örneğin tam kodunu GitHub'da bulabilirsiniz.
Önkoşullar
- Visual Studio 2017 veya sonraki sürümleri.
- NuGet paketi olarak kullanılabilen Json.NET çerçevesi.
- Linux/MacOS kullanıyorsanız Bu uygulamayı Mono kullanarak çalıştırabilirsiniz.
Azure kaynağı oluşturma
Aşağıdaki Azure kaynaklarından birini oluşturarak Bing Haber Arama API'sini kullanmaya başlayın:
- Kaynağı silene kadar Azure portal aracılığıyla kullanılabilir.
- Hizmeti denemek için ücretsiz fiyatlandırma katmanını kullanın ve daha sonra üretim için ücretli bir katmana yükseltin.
- Kaynağı silene kadar Azure portal aracılığıyla kullanılabilir.
- Birden çok Azure AI hizmeti genelinde uygulamalarınız için aynı anahtarı ve uç noktayı kullanın.
Proje oluşturma ve başlatma
Visual Studio'da yeni bir C# konsol çözümü oluşturun. Ardından aşağıdaki ad alanlarını ana kod dosyasına ekleyin:
using System; using System.Text; using System.Net; using System.IO; using System.Collections.Generic;
API uç noktası, abonelik anahtarınız ve arama teriminiz için değişkenler oluşturun. Aşağıdaki kodda genel uç noktayı kullanabilir veya kaynağınız için Azure portal görüntülenen özel alt etki alanı uç noktasını kullanabilirsiniz.
const string accessKey = "enter key here"; const string uriBase = "https://api.cognitive.microsoft.com/bing/v7.0/news/search"; const string searchTerm = "Microsoft";
Bing Haber Arama yanıtını biçimlendirmek için bir yapı oluşturma
Haber arama sonuçlarını ve JSON üst bilgi bilgilerini içerecek bir SearchResult
yapı tanımlayın.
struct SearchResult
{
public String jsonResult;
public Dictionary<String, String> relevantHeaders;
}
Haber arama isteği oluşturma ve işleme
API'yi çağırmak için adlı
BingNewsSearch()
bir yöntem oluşturun ve dönüş türünü daha önce oluşturulan yapıyaSearchResult
ayarlayın.Aşağıdaki adımlarda bu yönteme kod ekleyin.
Arama isteği için URI oluşturun. Arama
toSearch
terimi, dizeye eklenmeden önce biçimlendirilmelidir.static SearchResult BingNewsSearch(string toSearch){ var uriQuery = uriBase + "?q=" + Uri.EscapeDataString(toSearch); //...
Web isteğini gerçekleştirin ve yanıtı JSON dizesi olarak alın.
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();
Arama sonucu nesnesini oluşturun ve Bing HTTP üst bilgilerini ayıklayın. Ardından döndür.
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;
Yanıtı işleme
Ana yöntemde BingNewsSearch()
çağrısı yapın ve döndürülen yanıtı depolayın. Ardından JSON'u seri durumdan çıkararak yanıtın değerlerini görüntüleyebileceğiniz bir nesneye dönüştürebilirsiniz.
SearchResult result = BingNewsSearch(searchTerm);
//deserialize the JSON response
dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(result.jsonResult);
Console.WriteLine(jsonObj["value"][0])
Örnek JSON yanıtı
Başarılı yanıt, aşağıdaki örnekte gösterildiği gibi JSON biçiminde döndürülür:
{
"_type": "News",
"readLink": "https:\/\/api.cognitive.microsoft.com\/api\/v7\/news\/search?q=Microsoft",
"totalEstimatedMatches": 36,
"sort": [
{
"name": "Best match",
"id": "relevance",
"isSelected": true,
"url": "https:\/\/api.cognitive.microsoft.com\/api\/v7\/news\/search?q=Microsoft"
},
{
"name": "Most recent",
"id": "date",
"isSelected": false,
"url": "https:\/\/api.cognitive.microsoft.com\/api\/v7\/news\/search?q=Microsoft&sortby=date"
}
],
"value": [
{
"name": "Microsoft to open flagship London brick-and-mortar retail store",
"url": "http:\/\/www.contoso.com\/article\/microsoft-to-open-flagshi...",
"image": {
"thumbnail": {
"contentUrl": "https:\/\/www.bing.com\/th?id=ON.F9E4A49EC010417...",
"width": 220,
"height": 146
}
},
"description": "After years of rumors about Microsoft opening a brick-and-mortar...",
"about": [
{
"readLink": "https:\/\/api.cognitive.microsoft.com\/api\/v7\/entiti...",
"name": "Microsoft"
},
{
"readLink": "https:\/\/api.cognitive.microsoft.com\/api\/v7\/entit...",
"name": "London"
}
],
"provider": [
{
"_type": "Organization",
"name": "Contoso"
}
],
"datePublished": "2017-09-21T21:16:00.0000000Z",
"category": "ScienceAndTechnology"
},
. . .
{
"name": "Microsoft adds Availability Zones to its Azure cloud platform",
"url": "https:\/\/contoso.com\/2017\/09\/21\/microsoft-adds-availability...",
"image": {
"thumbnail": {
"contentUrl": "https:\/\/www.bing.com\/th?id=ON.0AE7595B9720...",
"width": 700,
"height": 466
}
},
"description": "Microsoft has begun adding Availability Zones to its...",
"about": [
{
"readLink": "https:\/\/api.cognitive.microsoft.com\/api\/v7\/entities\/a093e9b...",
"name": "Microsoft"
},
{
"readLink": "https:\/\/api.cognitive.microsoft.com\/api\/v7\/entities\/cf3abf7d-e379-...",
"name": "Windows Azure"
},
{
"readLink": "https:\/\/api.cognitive.microsoft.com\/api\/v7\/entities\/9cdd061c-1fae-d0...",
"name": "Cloud"
}
],
"provider": [
{
"_type": "Organization",
"name": "Contoso"
}
],
"datePublished": "2017-09-21T09:01:00.0000000Z",
"category": "ScienceAndTechnology"
}
]
}