1

このページでの最初の質問です。mvc webapi と Windows ストア アプリケーションにアプリケーションがあり、W8 アプリでオブジェクトを Web API に要求したい:

私のオブジェクト:

 var objobj = new ObjectCompleteAdd()
            {
                NameObject = "Name",
                DescriptionObject = "Description",
                isActveObject = true,
                ContractStartObject = DateTime.Parse("2005-09-01"),
                CityAdress = " CityAdress",
                PostCodeAdress = "PostCode",
}

BLL のクラス:

 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);

        }

それはうまくいきません

4

1 に答える 1

0

オブジェクトをシリアル化した後、ストリームを巻き戻し、位置をゼロに設定します。

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();
}
于 2013-01-23T00:39:34.077 に答える