【问题标题】:How to consume WCF POST with List<Object> as parameters如何使用 List<Object> 作为参数的 WCF POST
【发布时间】:2017-03-24 06:27:06
【问题描述】:

我有一个这样的类定义:

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

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

【问题讨论】:

    标签: c# asp.net web-services wcf http-post


    【解决方案1】:

    您可以使用 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;               
            }
    

    【讨论】:

    • 我想从客户端代码中传递对象列表,你能给我一个示例代码吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多