2017-03-24 33 views
1

我有一個類定義是這樣的:如何使用WCF POST與列表<Object>作爲參數

public class Newuser 
    { 
     [DataMember] 
     public string username { get; set; } 

     [DataMember] 
     public List<UserDetail> u_details{ get; set; } 

    } 


public class UserDetail 
    { 
     [DataMember] 
     public string age { get; set; } 

     [DataMember] 
     public string gender { get; set; } 

    } 

,並宣佈[OperationContract]一樣:

[OperationContract] 
     [WebInvoke(Method = "POST", 
     ResponseFormat = WebMessageFormat.Json, 
     RequestFormat = WebMessageFormat.Json, 
     UriTemplate = "/addUser" 
     )] 
     void addUser(Newuser usr); 

通常情況下,我用這個下面的代碼使用WCF POST:

BudgetTransactionRequest cb = new BudgetTransactionRequest 
       { 
        category = "category", 
        amount = 2000.000 
       }; 

       WebClient proxy = new WebClient(); 
       proxy.Headers["Content-Type"] = "application/json"; 
       MemoryStream ms = new MemoryStream(); 
       DataContractJsonSerializer serialize = new DataContractJsonSerializer(typeof(CreateBudget)); 
       serialize.WriteObject(ms, cb); 
       byte[] data = proxy.UploadData("http://localhost:1910/Service1.svc/adduser", "POST", ms.ToArray()); 
       Stream stream = new MemoryStream(data); 
       DataContractJsonSerializer obj = new DataContractJsonSerializer(typeof(CreateBudget)); 

但是,當對象包含一個列表,很難找到正確的方式來使用此服務。如何通過列表傳遞多個對象參數?

回答

0

您可以在WCF端使用查詢參數來獲取值。

var username = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["username"]; 

變種密碼= WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters [ 「密碼」];

**This you can use to consume WCF POST:** 

     HttpWebRequest req = null; 
     HttpWebResponse resp = null; 
     string baseAddress = "http://localhost:1910/Service1.svc"; 
     try 
     { 
      req = (HttpWebRequest)WebRequest.Create(baseAddress + "/adduser?Username=" + username+ "&Password=" + password); 
      req.Method = "POST"; 
      req.ContentType = "text/xml; encoding = UTF-8"; 
      using (StreamWriter writer = new StreamWriter(req.GetRequestStream())) 
      { 
       writer.WriteLine(your_json_data); 
      } 
      resp = req.GetResponse() as HttpWebResponse;    
     } 
+0

我想通過從客戶端代碼的對象列表,你能給我一個示例代碼? –