2013-01-22 1 views
1

이 페이지에서 내 첫 번째 질문입니다. 나는 MVC webapi 및 Windows 스토어 응용 프로그램의 응용 프로그램이 있고 나는 웹 API에 W8 앱 내 개체를 요청하려는 :httpClient.PostAsync - Windows 저장 응용 프로그램 - mvc webapi

내 객체 : BLL에

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

     } 

그것은 개체를 직렬화 한 후

답변

0

작업 스트림을 되감기 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); 

UPDATE : 글쎄, 난 당신이 또한 필요가 있다고 생각을 보내는 JSON 객체를 제대로 deserialize하려면 서버 코드를 수정하십시오. ASP.NET은 JSON을 자동으로 deserialize하지 않습니다.

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