如何在web api中发送和接收复杂对象
本文关键字:复杂 对象 web api | 更新日期: 2023-09-27 18:24:36
IDE:Visual Studio 2012
我有如下控制器:
public class MyController: ApiController
{
public IHttpActionResult AddMyControllerInfo([FromBody]Dictionary<string, string> dictCustomer)
{
//Some logic...
return Ok("Success");
}
}
它是从客户项目调用的:
调用代码如下:
internal static void SendInfoToMyController(Dictionary<string, string> dictCustomer)
{
string jsDict = Utilities.SerializeToJson<Dictionary<string, string>>(dictCustomer);
string js = Utilities.MakeRequest_Post("/api/AddMyControllerInfo", jsDict);
}
这里是Make request函数:
internal static string MakeRequest_Post(string sURL, string formData)
{
try
{
sURL = ConfigurationManager.AppSettings["ServerApiPath"] + sURL;
using (var client = new WebClient())
{
client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
var result = client.UploadString(sURL, "POST", "=" + formData);
}
}
catch (Exception ex)
{
}
return "";
}
当我接收到字符串(json格式)数据类型形式的[FromBody]参数数据,并将其反序列化为字典形式时,上面的代码运行良好。
但在上面的场景中,我接收到字典对象为null。
对于上面的场景,你能告诉我如何在webapi中接收复杂的对象吗。
您在请求中使用了错误的内容类型。在MakeRequest_Post
方法中,更改内容类型标头如下:
client.Headers[HttpRequestHeader.ContentType] = "application/json";
我认为您还需要从POST主体中删除前导=
,如下所示:
var result = client.UploadString(sURL, "POST", formData);