我已在ValuesController类中使用以下方法设置了一个基本的MVC Web API项目 -
// GET api/values/5
public string Get(int id)
{
return "Success!";
}
在客户端中调用此类似 -
client.BaseAddress = new Uri("http://localhost:12345/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync("api/values/5");
if (response.IsSuccessStatusCode)
{
result = await response.Content.ReadAsStringAsync();
}
我是相对较新的MVC但是我试图修改此方法以接受在数据库调用中使用的字符串变量。例如 -
// GET api/values/number/house/street
public string Get(string no, string house, string street)
{
// use variables
return "Success!";
}
然后客户端就像 -
HttpResponseMessage response = await client.GetAsync("api/values/" + no + house + street);
if (response.IsSuccessStatusCode)
{
result = await response.Content.ReadAsStringAsync();
}
我实际上是在尝试将API用作Web服务,但不确定如何将其修改为以这种方式工作。
当我尝试上面的代码时,它返回Bad Request
。
答案 0 :(得分:1)
您可能尚未设置路由到WebApi服务。 查看此资源,了解如何设置:http://www.asp.net/web-api/overview/web-api-routing-and-actions
编辑:
或者,等等!如果可能是对您的服务的呼叫是错误的。如果您查看api方法定义,注释会告诉您URL应如下所示:
GET api/values/number/house/street
虽然您将其称为:
GET api/values/NoHouseStreet
因此值之间没有斜线。我猜你如果你更改了网址,你就会调用以下内容,那么事情就应该正常了:
HttpResponseMessage response = await client.GetAsync("api/values/" + no + "/" + house + "/" + street);