使用C#Controller从API获取数据

时间:2016-07-21 09:27:37

标签: c# ajax asp.net-mvc httprequest http-get

我有一个API,可以使用以下格式返回数据:

http://etr.azurewebsites.net/api/calculation/calculation?currency=eur&edition=standart&systems=50&version=5

我想创建一个看起来如下的HttpActionResult

public class CalculateController : ApiController
    {
        // GET: Calculate
        [HttpGet]
        public IHttpActionResult CalculatePrice([FromUri]string currency,
                                                [FromUri]string edition = null,
                                                [FromUri]int? systems = null,
                                                [FromUri]string version = null)
        {

            //Code here

        }
    }

我的RouteConfig课程如下:

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { action = "Index", id = UrlParameter.Optional }
            );
        }

我从中获取数据的控制器如下所示:

public class CalculationController : ApiController
{
    [HttpGet]
    public async Task<IHttpActionResult> Calculate(.._parameters_..)
    {
        //Code here...
    }
}

我如何提出从我想要的网址获取数据的请求?

1 个答案:

答案 0 :(得分:2)

使用Httpclient向您要使用正确参数调用的网址发出请求。我想你要调用的网址是web api / RESTful网络服务。

using (var client = new HttpClient())
{
    // New code:
    client.BaseAddress = new Uri("Your API URL");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
} 

根据API方法的类型(GET / POST),您将进行适当的调用。 您可以在此示例中找到更多信息。

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

示例有一个控制台应用程序作为客户端来调用web api,而在您的情况下,您的MVC应用程序是客户端。