2017-06-08 6 views
0

クライアントアプリケーションからWebメソッドにデータを送信できません。実際に何が間違っているのか分かりません。Webメソッドにデータを渡すことができず、常にnullになるc#

クライアント:

public void syncClient(Customer c) 
    { 
     try 
     { 
       var datos = new JavaScriptSerializer().Serialize(c); 
       DataContractJsonSerializer ser = 
       new DataContractJsonSerializer(typeof(string)); 
       MemoryStream mem = new MemoryStream(); 
       ser.WriteObject(mem, datos); 

       string data = Encoding.UTF8.GetString(mem.ToArray(), 0, (int)mem.Length); 

       string url = store.ParentUrl + "Api/syncClientFromChild"; 

       HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
       request.ContentType = @"application/json"; //set the content type to JSON 
       request.Method = "POST"; 

       System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); 

       byte[] send = encoding.GetBytes(data); 
       request.ContentLength = send.Length; 

       using (Stream newStream = request.GetRequestStream()) 
       { 
        newStream.Write(send, 0, send.Length); 
       } 

       WebResponse ws1 = request.GetResponse(); 
       JavaScriptSerializer serializer = new JavaScriptSerializer(); 
       ApiCtrlResponse response = serializer.Deserialize<ApiCtrlResponse>(serializer.Serialize(ws1.GetResponseStream())); 
       if (response.success == true) 
       { 
        c.Synced = true; 
        _customerService.UpdateCustomer(c); 
       } 

     } 
     catch (Exception A) 
     { 
     } 
    } 

私はthatsの罰金を信じて、私はいつも私が受信する必要がある文字列にnullを取得する他の方法:私が行方不明です何

[System.Web.Services.WebMethod] 
public ActionResult syncClientFromChild(string Customer) 
{ 
    // do something 
} 

?前もって感謝します !

+0

のように、文字列を使用しないようにしてみてください? – squill25

答えて

0

は、HTTPポストを受け入れるためにモデルを使用して、あなたは `data`は、右シリアル化されたデータが含まれているかどうかをチェックしまし

public class ReceiveModel 
{ 
string Customer; 
} 

public ActionResult syncClientFromChild(ReceiveModel model) 
関連する問題