使用带有两个参数的webapi

时间:2017-04-04 09:05:26

标签: c# asp.net-web-api

您好我正在学习WebApi并遇到了这个问题。搜索时间没有产生任何解决方案。

我试图调用api传递两个参数仅用于测试目的。我收到404错误的是GetBalance(param1, param2)。我有一个名为GetOffice(param1)的Api公开的另一个函数,其中一个参数返回200.我得到的404是两个参数函数。

public void GetBalance(string accountNumber,int officeId)
    {
        using (var client = new WebClient())
        {
            client.Headers.Add("Content-Type:application/json");
            client.Headers.Add("Accept:application/json");
            client.Headers.Add("API_KEY","1234CHECK");
            var result = client.DownloadString("http://localhost/api/Accounts/GetBalance/" + accountNumber  + officeId ); //URI 
            Console.WriteLine(Environment.NewLine + result);

        }
    }

static void Main(string[] args)
    {
        ConsumeApiSync objSync = new ConsumeApiSync();
        objSync.GetBalance("01-13-00000595", 1);
    }

路线

RouteTable.Routes.MapHttpRoute("OfficeApi", "api/{controller}/{action}/{accountNumber}/{officeId}");

我发现404找不到错误。什么一定是错的?帮助感谢。感谢

2 个答案:

答案 0 :(得分:2)

在包含这两个属性的Web Api控制器上使用视图模型。所以而不是:

public HttpresponseMessage  GetBalance(string accountNumber,int officeId)
{
    ...
}

使用:

public HttpresponseMessage Post(ViewModelName model)
{
    ...
}
   var uri = string.Concat("http://localhost/api/Accounts/GetBalance",model);

答案 1 :(得分:1)

好像你的请求URI不正确。

var uri = string.Concat("http://localhost/api/Accounts/GetBalance/", accountNumber, "/", officeId);

请尝试以下代码。

public void GetBalance(string accountNumber,int officeId)
{
    using (var client = new WebClient())
    {
        client.Headers.Add("Content-Type:application/json");
        client.Headers.Add("Accept:application/json");
        client.Headers.Add("API_KEY","1234CHECK");
        var uri = string.Concat("http://localhost/api/Accounts/GetBalance/", accountNumber, "/", officeId);
        var result = client.DownloadString(uri); //URI 
        Console.WriteLine(Environment.NewLine + result);

    }
}

static void Main(string[] args)
{
    ConsumeApiSync objSync = new ConsumeApiSync();
    objSync.GetBalance("01-13-00000595", 1);
}