我正在使用WebApi 1(Visual Studio:2010)
在极少数情况下,客户端可以向方法发送可变(动态)数量的参数。 (通过POST
动词)
我一直试图通过发送可变数量的参数来测试它:
POST http://.../api/Claims HTTP/1.1
Host: ...
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 13
a=1&b=2&c=4
在服务器端:
[HttpPost]
public dynamic NewClaim1([FromBody] dynamic al)
{
return Request.CreateResponse(HttpStatusCode.OK, (object)al);
}
但我在回复时得到一个空对象。 (200 OK
)
尝试#2
我也试过([FromBody] object al)
尝试#3
我也试过(object[] al)
尝试#4
public class A //using a class holder
{
public object[] obj { get; set; }
}
[HttpPost]
public dynamic NewClaim1([FromBody] A al)
{
return Request.CreateResponse(HttpStatusCode.OK, al);
}
但没有成功
问题:
如何将动态post参数发送到我可以检索这些值的方法。
注意:
post
x-www-form-urlencoded
[FromBody]
参数答案 0 :(得分:3)
您可以使用FormDataCollection检索表单值。
public void PostForm(FormDataCollection formdata)
{
foreach (KeyValuePair<string, string> formEntry in formdata)
{
string key = formEntry.Key;
string value = formEntry.Value;
}
}
答案 1 :(得分:0)
在一个key: value
级对象的情况下,并且在所有属性均为字符串类型的唯一情况下,@ jon的答案可能会有所帮助。否则,提取复杂对象的实现必须比这复杂得多。
我建议使用JObject
作为反序列化的一种类型,即由Newtonsoft提供