三种客户端访问wcf服务端的方法 C#

原文 http://blog.csdn.net/zlj002/article/details/7914556

    string jsonstr = String.Empty;  

               string url = "http://localhost:7041/Service1/Hello";  

               #region WebClient 访问Get  

               WebClient webclient = new WebClient();  

               Uri uri = new Uri(url, UriKind.Absolute);  

               if (!webclient.IsBusy)  

               {  

                   webclient.Encoding = System.Text.Encoding.UTF8;  

                   jsonstr = webclient.DownloadString(url);  

                   dynamic json = JsonHelper.Deserialize(jsonstr);  

                   if (json.Length > 0)  

                   {  

                       this.Label1.Text = json[0]["StringValue"] + ">>>" + json[0]["Id"] + "WebClientGet";  

                   }  

      

               }  

               #endregion  

               #region WebClient 访问Post  

               url = "http://localhost:7041/Service1/GetList";  

               IDictionary<string, object> data = new Dictionary<string, object>  

            {  

                {"stringValue", "汉字汉字"}    

            };  

               byte[] postData = Encoding.UTF8.GetBytes(JsonHelper.Serialize(data));  

               WebClient clienttt = new WebClient();  

               clienttt.Headers.Add("Content-Type", "application/json");  

               clienttt.Headers.Add("ContentLength", postData.Length.ToString());  

               byte[] responseData = clienttt.UploadData(url, "POST", postData);  

               string rr = Encoding.UTF8.GetString(responseData);  

               dynamic jsontt = JsonHelper.Deserialize(rr);  

               if (jsontt["GetListResult"].Length > 0)  

               {  

                   this.Label1.Text = jsontt["GetListResult"][0]["StringValue"] + ">>>" + jsontt["GetListResult"][0]["Id"] + "WebClientGetPost";  

               }  

               #endregion  

     

               #region WebRequest Get 访问  

               url = "http://localhost:7041/Service1/Hello";  

               HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;  

               HttpWebResponse response = request.GetResponse() as HttpWebResponse;  

               string code = response.ContentType;  

               code = code.Split('=')[1];  

               using (Stream stream = response.GetResponseStream())  

               {  

                   StreamReader sr = new StreamReader(stream, Encoding.GetEncoding  

                       (code));  

                   string retemp = sr.ReadToEnd();  

                   dynamic jsonretemp = JsonHelper.Deserialize(retemp);  

                   if (jsonretemp.Length > 0)  

                   {  

                       this.Label1.Text = jsonretemp[0]["StringValue"] + ">>>" + jsonretemp[0]["Id"] + "WebRequest Get";  

                   }  

      

               }  

               response.Close();  

               #endregion  

               #region WebRequest Post 访问  

               url = "http://localhost:7041/Service1/GetList";  

               WebRequest requestPost = WebRequest.Create(url);  

               requestPost.Method = "POST";  

               byte[] postDatarequestPost = Encoding.UTF8.GetBytes(JsonHelper.Serialize(data));  

               requestPost.ContentType = "application/json";  

               requestPost.ContentLength = postDatarequestPost.Length;  

               Stream dataStream = requestPost.GetRequestStream();  

               dataStream.Write(postDatarequestPost, 0, postDatarequestPost.Length);  

               dataStream.Close();  

               WebResponse responsePost = requestPost.GetResponse();  

               dataStream = responsePost.GetResponseStream();  

               StreamReader readerPost = new StreamReader(dataStream, Encoding.UTF8);  

               string ResponseFromServer = readerPost.ReadToEnd();  

               dynamic jsonttResponseFromServer = JsonHelper.Deserialize(ResponseFromServer);  

               if (jsonttResponseFromServer["GetListResult"].Length > 0)  

               {  

                   this.Label1.Text = jsonttResponseFromServer["GetListResult"][0]["StringValue"] + ">>>" + jsonttResponseFromServer["GetListResult"][0]["Id"] + "WebRequestPost";  

               }  

               readerPost.Close();  

               dataStream.Close();  

               responsePost.Close();  

               #endregion  

                

               #region HttpClient Get访问  

               url = "http://localhost:7041/Service1/Hello";  

               using (HttpClient client = new HttpClient())  

               {  

                   using (HttpResponseMessage message = client.Get(url))  

                   {  

                       message.EnsureStatusIsSuccessful();  

                       jsonstr = message.Content.ReadAsString();  

                       dynamic json = JsonHelper.Deserialize(jsonstr);  

      

                       if (json.Length > 0)  

                       {  

                           this.Label1.Text = json[0]["StringValue"] + ">>>" + json[0]["Id"] + ">>>>HttpClientGet";  

                       }  

                   }  

               }  

               #endregion  

               #region HttpClient Post 访问  

               url = "http://localhost:7041/Service1/GetList";  

               HttpClient clientPost = new HttpClient();  

               clientPost.DefaultHeaders.Add("ContentType", "application/json");  

               clientPost.DefaultHeaders.Add("Accept", "application/json");  

      

               HttpContent content = HttpContent.Create(JsonHelper.Serialize(data), Encoding.UTF8, "application/json");  

               HttpResponseMessage responseMessage = clientPost.Post(url, content);  

               if (responseMessage.StatusCode != HttpStatusCode.OK && responseMessage.StatusCode != HttpStatusCode.Accepted)  

               {  

                   //出错  

               }  

               responseMessage.EnsureStatusIsSuccessful();  

               string result = responseMessage.Content.ReadAsString();  

               dynamic jsonpost = JsonHelper.Deserialize(result);  

      

               if (jsonpost["GetListResult"].Length > 0)  

               {  

                   this.Label1.Text = jsonpost["GetListResult"][0]["StringValue"] + ">>>" + jsonpost["GetListResult"][0]["Id"] + ">>>>HttpClientPost";  

               }  

               #endregion  



服务端代码要注意配置属性,比如



[csharp] view plaincopy



    [WebInvoke(UriTemplate = "GetList", Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json,BodyStyle =

你可能感兴趣的:(WCF)