C# 如何在C中解析Bing2API的PostAsync响应?

C# 如何在C中解析Bing2API的PostAsync响应?,c#,arrays,parsing,httpclient,bing-api,C#,Arrays,Parsing,Httpclient,Bing Api,几个月前,Bing发布了新版本2的搜索API。MS认知服务提供了使用其新搜索API 2的示例。 然而,工作过的示例都是XML响应,只有部分C示例进行了调用,但没有解码结果 有人可以解释或继续示例代码,以便将返回的对象解析为实际的图像或图像URL吗?在下面的代码中,内容变量的类型为ByteArrayContent,但是从这个数组中获取信息需要什么?响应变量的类型为HttpResponseMessage,但如何从中提取图像或图像URL 这将允许应用程序选择并显示一个或多个返回的图像 非常感谢,蒂姆

几个月前,Bing发布了新版本2的搜索API。MS认知服务提供了使用其新搜索API 2的示例。

然而,工作过的示例都是XML响应,只有部分C示例进行了调用,但没有解码结果

有人可以解释或继续示例代码,以便将返回的对象解析为实际的图像或图像URL吗?在下面的代码中,内容变量的类型为ByteArrayContent,但是从这个数组中获取信息需要什么?响应变量的类型为HttpResponseMessage,但如何从中提取图像或图像URL

这将允许应用程序选择并显示一个或多个返回的图像

非常感谢,蒂姆

下面是C代码示例:

using System;
using System.Net.Http.Headers;
using System.Text;
using System.Net.Http;
using System.Web;

namespace CSHttpClientSample
{
    static class Program
    {
        static void Main()
        {
            MakeRequest();
            Console.WriteLine("Hit ENTER to exit...");
            Console.ReadLine();
        }

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

            // Request headers
            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", 
            "{subscription key}");

            // Request parameters
            queryString["q"] = "cats";
            var uri = 
                "https://api.cognitive.microsoft.com/bing/v5.0/images/search?" 
                + queryString;

            HttpResponseMessage response;

            // Request body
            byte[] byteData = Encoding.UTF8.GetBytes("{body}");

            using (var content = new ByteArrayContent(byteData))
            {
               content.Headers.ContentType = new MediaTypeHeaderValue(
               "< your content type, i.e. application/json >");
               response = await client.PostAsync(uri, content);
            }

        }
    }
}   

经过一些尝试和错误,我发现插入以下代码首先将搜索响应转换为字符串,然后转换为JSON对象,可以对Bing的各种搜索结果进行解析

using Newtonsoft.Json;
....
....
response = await client.PostAsync(uri, content);

if (response.IsSuccessStatusCode)
{
    Stringr str = await response.Content.ReadAsStringAsync();

    dynamic json = JsonConvert.DeserializeObject(str);
}

经过一些尝试和错误,我发现插入以下代码首先将搜索响应转换为字符串,然后转换为JSON对象,可以对Bing的各种搜索结果进行解析

using Newtonsoft.Json;
....
....
response = await client.PostAsync(uri, content);

if (response.IsSuccessStatusCode)
{
    Stringr str = await response.Content.ReadAsStringAsync();

    dynamic json = JsonConvert.DeserializeObject(str);
}
是一个非常易于使用的客户端API,用于bing搜索API,您可以获得web搜索、图片、新闻。。。我也是。下面是一个小例子,说明如何使用它从C中的Bing搜索中获取图片

    SearchResult result = await BingSearchHelper.Query("Bill Gates", new BingQueryParameters( apiKey: "APPKEY", count: 10, offset: 0, mkt: "en-us", safeSearch: "Moderate") );

Console.WriteLine(result.images.value[0].thumbnailUrl);
如果您将JSON或XML转换仅用于此目的,则不需要JSON或XML转换。 我希望它能帮助您。

是一个非常易于使用的客户端API,用于bing搜索API,您可以获得web搜索、图片、新闻。。。我也是。下面是一个小例子,说明如何使用它从C中的Bing搜索中获取图片

    SearchResult result = await BingSearchHelper.Query("Bill Gates", new BingQueryParameters( apiKey: "APPKEY", count: 10, offset: 0, mkt: "en-us", safeSearch: "Moderate") );

Console.WriteLine(result.images.value[0].thumbnailUrl);
如果您将JSON或XML转换仅用于此目的,则不需要JSON或XML转换。 我希望它能帮助你