如何使用asp.net Web API中的webApi将结果存储到数据库中?

Kar*_*raj 48 c# asp.net asp.net-web-api

我想知道如何从另一个ASP.Net Web API使用WEBAPI来将响应存储在数据库中.我知道如何从javascript,控制台应用程序等客户端使用WEBAPI.

但要求是通过我的WEBAPI从第三方API提取数据并将结果存储在数据库中,以便使用我的WEBAPI我的客户端请求我提供数据.

是否可以使用Asp.Net Web API执行此操作?

Nic*_* N. 92

在本教程中将介绍如何使用C#使用Web API,在此示例中使用了一个控制台应用程序,但您当然也可以使用另一个Web API来使用它.

http://www.asp.net/web-api/overview/web-api-clients/calling-a-web-api-from-a-net-client

你应该看看 HttpClient

HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost/yourwebapi");
Run Code Online (Sandbox Code Playgroud)

确保您的请求使用Accept标头在JSON中请求响应,如下所示:

client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
Run Code Online (Sandbox Code Playgroud)

现在出现与教程不同的部分,确保您拥有与其他对象相同的对象WEB API,如果没有,则必须将对象映射到您自己的对象.ASP.NETJSON您收到的内容转换为您想要的对象.

HttpResponseMessage response = client.GetAsync("api/yourcustomobjects").Result;
if (response.IsSuccessStatusCode)
{
    var yourcustomobjects = response.Content.ReadAsAsync<IEnumerable<YourCustomObject>>().Result;
    foreach (var x in yourcustomobjects)
    {
        //Call your store method and pass in your own object
        SaveCustomObjectToDB(x);
    }
}
else
{
    //Something has gone wrong, handle it here
}
Run Code Online (Sandbox Code Playgroud)

请注意我.Result用于示例的情况.您应该考虑在async await这里使用模式.

  • 谢谢你的回复. (2认同)

Mal*_*eBR 9

由于一些无法解释的原因,这个解决方案对我不起作用(可能是类型的一些不兼容),所以我为自己想出了一个解决方案:

HttpResponseMessage response = await client.GetAsync("api/yourcustomobjects");
if (response.IsSuccessStatusCode)
{
    var data = await response.Content.ReadAsStringAsync();
    var product = JsonConvert.DeserializeObject<Product>(data);
}
Run Code Online (Sandbox Code Playgroud)

这样我的内容被解析为JSON字符串,然后我将其转换为我的对象.