我是一个尝试调用Web API方法的新手。使用PostAsJsonAsync调用Web API
我有一个四边形对象:
public class Quadrilateral
{
public double SideA { get; private set; }
public double SideB { get; private set; }
public double SideC { get; private set; }
public double SideD { get; private set; }
public double AngleAB { get; private set; }
public double AngleBC { get; private set; }
public double AngleCD { get; private set; }
public double AngleDA { get; private set; }
public virtual string Name { get { return "Generic Quadrilateral"; } }
public virtual string Description { get { return "A quadrilateral that has no specific name for its shape"; } }
public Quadrilateral(double sideA, double sideB, double sideC, double sideD,
double angleAB, double angleBC, double angleCD, double angleDA)
{
SideA = sideA;
SideB = sideB;
SideC = sideC;
SideD = sideD;
AngleAB = angleAB;
AngleBC = angleBC;
AngleCD = angleCD;
AngleDA = angleDA;
}
}
我的Web API POST方法确实很简单的东西。它接受一个四边形对象,并返回四边形,矩形的子类型:
public class Rectangle : Quadrilateral
{
public override string Name { get { return "Rectangle"; } }
public override string Description { get { return "A quadrilateral with equal opposite sides and 4 right angles"; } }
public Rectangle(Quadrilateral q) :
base(q.SideA, q.SideB, q.SideC, q.SideD,
q.AngleAB, q.AngleBC, q.AngleCD, q.AngleDA) { }
}
网络API post方法看起来像这样:
public Quadrilateral Post(Quadrilateral q)
{
return new Rectangle(q);
}
我创建一个四边形的对象,分配部件的值。然后我尝试使用下面的代码来调用我的Web API:
readonly string baseUri = "http://localhost:43798/";
readonly string controller = "api/quadrilateral";
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri(baseUri);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.PostAsJsonAsync(controller, quadrilateral);
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadAsAsync<Quadrilateral>();
}
else
{
return null;
}
}
调试表明,网页API POST方法被击中,但四边形对象现在只包含0.0所有的double成员。为什么post方法没有得到我想要发送的对象?
它可能与返回的JSON不匹配到您的'Quadrilateral'类。你可以发布返回的JSON吗? – 2014-10-22 08:14:01
我是JSON的新手。我该如何去捕获调用者和web api方法之间的JSON消息? – pzyktzle 2014-10-24 02:58:49