HttpClient+WebApi+多个Post +多个参数
本文关键字:参数 多个 Post HttpClient+WebApi+ | 更新日期: 2023-09-27 18:06:20
我是asp.net的新手,我遇到了一个小问题,我在MVC项目中创建了一个新的webapi控制器,当我试图从这个控制器获得响应时,我得到404错误:s
下面是所用控制器的代码:
public class SampleController : ApiController
{
[HttpPost]
public string Auth(string number, string password)
{
....
}
[HttpPost]
public string SendSms(string smsTo, string content)
{
....
}
}
WebApiConfig:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
和这里的代码c#:
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:66893");
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("number", "login"),
new KeyValuePair<string, string>("password", "password")
});
var result = client.PostAsync("/api/sms/auth", content).Result;
string resultContent = result.Content.ReadAsStringAsync().Result;
Console.WriteLine(resultContent);
}
当我在XHR Poster中尝试localhost:66893/api/sms/auth?number=xxx&password=xxx时,我得到了结果:s
请帮助非常感谢
您的客户端发布到"/api/sms/auth",但由于您将控制器命名为SampleController它应该是"/api/sample/auth"。
这是因为Web API在{Controller}变量的值中添加了"Controller"来查找控制器。
但是你的路由没有包含动作。应该是:
routeTemplate: "api/{controller}/{action}/{id}",