这是我在这页上的第一个问题。我在mvc webapi和Windows应用程序中有应用程序,我想用W8应用程序请求我的对象到webapi:
我的目标:
var objobj = new ObjectCompleteAdd()
{
NameObject = "Name",
DescriptionObject = "Description",
isActveObject = true,
ContractStartObject = DateTime.Parse("2005-09-01"),
CityAdress = " CityAdress",
PostCodeAdress = "PostCode",
}
全班学生:
public class ObjectCompleteAdd
{
public string NameObject { get; set; }
public string DescriptionObject { get; set; }
public bool? isActveObject { get; set; }
public DateTime ContractStartObject { get; set; }
public string CityAdress { get; set; }
public string PostCodeAdress { get; set; }
}
我的职责是:
var dataContractSerializer = new DataContractJsonSerializer(typeof(ObjectCompleteAdd));
var memoryStream = new MemoryStream();
dataContractSerializer.WriteObject(memoryStream, objobj);
HttpContent content = new StreamContent(memoryStream);
await client.PostAsync("api/ObjectISApi",content);
在webapi,我有一篇文章:
// POST api/ObjectISApi
public HttpResponseMessage PostObjectIS(ObjectCompleteAdd obj)
{
ObjectIS.AddNewObject(obj);
return Request.CreateResponse(HttpStatusCode.OK);
}
不起作用
发布于 2013-01-22 16:39:34
序列化对象之后,倒带流,将位置设置为零:
var dataContractSerializer = new DataContractJsonSerializer(typeof(ObjectCompleteAdd));
var memoryStream = new MemoryStream();
dataContractSerializer.WriteObject(memoryStream, objobj);
// Rewind stream.
memoryStream.Position = 0;
HttpContent content = new StreamContent(memoryStream);
更新:好吧,我认为您还需要修改服务器代码,以便正确地反序列化您要发送的JSON对象。ASP.NET不会自动反序列化JSON。
public ActionResult PostObjectIS()
{
StreamReader reader = new StreamReader(Request.InputStream);
string contentString = reader.ReadToEnd();
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
var oca = jsonSerializer.Deserialize<ObjectCompleteAdd>(contentString);
Debug.WriteLine(oca.NameObject);
return View();
}
https://stackoverflow.com/questions/14469631
复制