2017-03-24 34 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

我想通过从客户端代码的对象列表,你能给我一个示例代码? –