繁体   English   中英

如何使用List来使用WCF POST <Object> 作为参数

[英]How to consume WCF POST with List<Object> as parameters

我有这样的类定义:

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

但是,当对象包含列表时,我很难找到使用此服务的正确方法。 如何通过列表传递多个对象参数?

您可以在WCF端使用查询参数来获取值。

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

var password = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters [“password”];

 **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;               
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM