zoukankan      html  css  js  c++  java
  • 三种客户端访问wcf服务端的方法 C#

     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
    

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

    [WebInvoke(UriTemplate = "GetList", Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.Wrapped)]
    
  • 相关阅读:
    看net2.0头晕眼花,是不是该做个具体的程序呢
    安装SQLServer2000时,提示"以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机"
    刚装的WIN7,用了一下午,记一下备忘
    不同系统开启和关闭fso的方法(转)
    希腊字母以及发音
    meta 标签的作用
    电信禁止路由上网的最佳破解方法(转)
    安装系统
    网络工程师笔记
    GHOST操作
  • 原文地址:https://www.cnblogs.com/Byrd/p/3418952.html
Copyright © 2011-2022 走看看