首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微软认知服务网络搜索API - DeSerialization问题

微软认知服务网络搜索API - DeSerialization问题
EN

Stack Overflow用户
提问于 2016-07-02 21:06:46
回答 2查看 643关注 0票数 3

我想学习认知服务Web搜索API,所以我开始创建一个bot应用程序。我已经有一个帐户,子键和其他所需的信息,我还阅读了许多文章,并观看了2016年的建设视频,以及,我有困难,同时反序列化的结果。我无法找到我可以使用的代理类。我使用的url是https://api.cognitive.microsoft.com/bing/v5.0/search/,我为以前的api版本找到了一个代理类。有人能告诉我如何在VS 2015中获得这些服务的api请求/响应的代理类吗?

我的代码是这样的:

代码语言:javascript
复制
  string BingSearchUrl =  "https://api.cognitive.microsoft.com/bing/v5.0/search/";
   const string bingKey = "Key";

    public static  async Task<string> Search(string query)
    {
        var client = HttpClientFactory.Create();
        var queryString = BingSearchUrl + "?q=" + query + "&count=10";        
        // Request headers
        client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", bingKey);
        client.DefaultRequestHeaders.Add("Accept", "application/json");

        // Request parameters
        string r = await client.GetStringAsync(queryString);
        var jsonResult = JsonConvert.DeserializeObject<Bing.ExpandableSearchResult>(r);

        return jsonResult.Web.First().Title;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-03 12:14:11

有了这个模型,我就能得到预期的结果。另一个答案中提出的模型在我的情况下是行不通的。

代码语言:javascript
复制
namespace BingSearchBot
{
    public class RootObject
    {
        public string _type { get; set; }
        public WebPages webPages { get; set; }
        public RelatedSearches relatedSearches { get; set; }
        public RankingResponse rankingResponse { get; set; }
    }
    public class WebPages
    {
        public string webSearchUrl { get; set; }
        public int totalEstimatedMatches { get; set; }
        public List<Value> value { get; set; }
    }
    public class Value
    {
        public string id { get; set; }
        public string name { get; set; }
        public string url { get; set; }
        public List<About> about { get; set; }
        public string displayUrl { get; set; }
        public string snippet { get; set; }
        public List<DeepLink> deepLinks { get; set; }
        public string dateLastCrawled { get; set; }
        public List<SearchTag> searchTags { get; set; }
    }
    public class About
    {
        public string name { get; set; }
    }

    public class DeepLink
    {
        public string name { get; set; }
        public string url { get; set; }
        public string snippet { get; set; }
    }

    public class SearchTag
    {
        public string name { get; set; }
        public string content { get; set; }
    }
    public class Value2
    {
        public string text { get; set; }
        public string displayText { get; set; }
        public string webSearchUrl { get; set; }
    }

    public class RelatedSearches
    {
        public string id { get; set; }
        public List<Value2> value { get; set; }
    }

    public class Value3
    {
        public string id { get; set; }
    }

    public class Item
    {
        public string answerType { get; set; }
        public int resultIndex { get; set; }
        public Value3 value { get; set; }
    }

    public class Mainline
    {
        public List<Item> items { get; set; }
    }

    public class RankingResponse
    {
        public Mainline mainline { get; set; }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2016-07-03 03:09:15

试试下面的代码

代码语言:javascript
复制
  public string BingSearchUrl = "https://api.cognitive.microsoft.com/bing/v5.0/search/";
        const string bingKey =[KEY];

        public async void Search()
        {
            var client = new HttpClient();
            var queryString = HttpUtility.ParseQueryString(string.Empty);

            // Request headers
            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", bingKey);

            // Request parameters
            queryString["q"] = "microsoft";
            queryString["count"] = "10";
            queryString["offset"] = "0";
            queryString["mkt"] = "en-us";
            queryString["safeSearch"] = "Moderate";
            var uri = "https://api.cognitive.microsoft.com/bing/v5.0/news/search?" + queryString;

            var response = await client.GetStringAsync(uri);
            var jsonResult = JsonConvert.DeserializeObject<BingJson>(response);

            string title = jsonResult.value[0].name.ToString();

        }

使用jsonResult.value[0],您可以循环查看结果。第一个结果是在[0]位置。

我创建了一个模型类,查看bing搜索响应json。看上去,

代码语言:javascript
复制
 public class BingJson
    {
        public string _type { get; set; }
        public Instrumentation instrumentation { get; set; }
        public string readLink { get; set; }
        public int totalEstimatedMatches { get; set; }
        public Value[] value { get; set; }
    }

    public class Instrumentation
    {
        public string pingUrlBase { get; set; }
        public string pageLoadPingUrl { get; set; }
    }

    public class Value
    {
        public string name { get; set; }
        public string url { get; set; }
        public string urlPingSuffix { get; set; }
        public Image image { get; set; }
        public string description { get; set; }
        public About[] about { get; set; }
        public Provider[] provider { get; set; }
        public DateTime datePublished { get; set; }
        public string category { get; set; }
    }

    public class Image
    {
        public Thumbnail thumbnail { get; set; }
    }

    public class Thumbnail
    {
        public string contentUrl { get; set; }
        public int width { get; set; }
        public int height { get; set; }
    }

    public class About
    {
        public string readLink { get; set; }
        public string name { get; set; }
    }

    public class Provider
    {
        public string _type { get; set; }
        public string name { get; set; }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38164481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档