您好我正在学习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找不到错误。什么一定是错的?帮助感谢。感谢
答案 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);
}