我正在调用WebApi方法并将数据传递给它。在调试时我可以看到我的控件转到WebAPI方法,但它没有收到我传递给它的正确参数数据。在调试时,我可以看到数据(字符串)正在传递给WebApi,但是在下一步中,WebApi会收到null。接收参数需要一些配置吗?请帮我下面是我的代码:
public static string PostData(Uri url,string obj)
{
string data = null;
try
{
using (WebClient proxy = new WebClient())
{
proxy.Headers.Add(HttpRequestHeader.ContentType, "application/json");
data = proxy.UploadString(url,"Post",obj);
}
}
catch (Exception ex)
{
throw ex;
}
return data;
}
的WebAPI
[HttpPost]
public void Post([FromBody]string data)
{
leadOptService.AddListOptions(data);
}
WebApi Conifg:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
答案 0 :(得分:1)
您尚未将POST映射到任何路线。因此,使用默认路由时,它会尝试将其与id
参数进行匹配。您可以为此定义API的新路线:
[RoutePrefix("myController")]
public class MyController : ApiController
{
[Route("")]
public void Post([FromBody]string data)
{
leadOptService.AddListOptions(data);
}
}
假设您的控制器被调用MyController
,您可以通过POST api/mycontroller
调用它。
答案 1 :(得分:1)
在我看来,这里的问题是不同的,为了澄清这个问题,你通过http体将Json数据传递给WebAPI帖子方法,虽然你能看到web api中的调用中断,但没有数据被填充,输入数据保持为空
原因是传递的数据模式与接收数据的模式不匹配,您使用Json在以下参数中传递字符串:
[FromBody]string data
Json始终是键值对,因此您的http主体应采用以下格式:
{
"data":"Message"
}
这将确保“Message”在输入参数
中被填满