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

简介: 原文 http://blog.csdn.net/zlj002/article/details/7914556 string jsonstr = String.Empty; string url = "http://localhost:7041/Ser...

原文 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 =
目录
相关文章
|
21天前
|
设计模式 IDE API
C# 一分钟浅谈:GraphQL 客户端调用
本文介绍了如何在C#中调用GraphQL API,涵盖基本步骤、常见问题及解决方案。首先,通过安装`GraphQL.Client`库并创建客户端实例,连接到GraphQL服务器。接着,展示了如何编写查询和突变,以及处理查询语法错误、变量类型不匹配等常见问题。最后,通过具体案例(如管理用户和订单)演示了如何在实际项目中应用这些技术,帮助开发者更高效地利用GraphQL。
64 38
C# 一分钟浅谈:GraphQL 客户端调用
|
24天前
|
设计模式 API 数据处理
C# 一分钟浅谈:GraphQL 客户端调用
本文介绍了如何在C#中使用`GraphQL.Client`库调用GraphQL API,涵盖基本查询、变量使用、批量请求等内容,并详细说明了常见问题及其解决方法,帮助开发者高效利用GraphQL的强大功能。
95 57
|
3月前
|
开发框架 .NET 程序员
C# 去掉字符串最后一个字符的 4 种方法
在实际业务中,我们经常会遇到在循环中拼接字符串的场景,循环结束之后拼接得到的字符串的最后一个字符往往需要去掉,看看 C# 提供了哪4种方法可以高效去掉字符串的最后一个字符
348 0
|
2月前
|
编译器 C#
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
125 65
|
6月前
|
数据采集 数据可视化 测试技术
C#生成Selenium测试报告:实用方法与技巧
在C#中使用Selenium进行自动化测试时,结合代理IP和ExtentReports能增强测试安全性和报告质量。安装必备工具如Selenium WebDriver、NUnit和ExtentReports。在测试设置中,配置代理(如亿牛云爬虫代理)以隐藏IP,通过ChromeOptions定制UserAgent,并添加Cookie。测试代码示例展示了如何打开网页、执行搜索并生成详细的测试报告。使用ExtentReports可创建可视化测试结果,便于团队分析。
C#生成Selenium测试报告:实用方法与技巧
|
1月前
|
JSON 程序员 C#
使用 C# 比较两个对象是否相等的7个方法总结
比较对象是编程中的一项基本技能,在实际业务中经常碰到,比如在ERP系统中,企业的信息非常重要,每一次更新,都需要比较记录更新前后企业的信息,直接比较通常只能告诉我们它们是否指向同一个内存地址,那我们应该怎么办呢?分享 7 个方法给你!
|
1月前
|
C# UED SEO
C# 异步方法async / await任务超时处理
通过使用 `Task.WhenAny`和 `Task.Delay`方法,您可以在C#中有效地实现异步任务的超时处理机制。这种方法允许您在指定时间内等待任务完成,并在任务超时时采取适当的措施,如抛出异常或执行备用操作。希望本文提供的详细解释和代码示例能帮助您在实际项目中更好地处理异步任务超时问题,提升应用程序的可靠性和用户体验。
69 3
|
2月前
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
69 8
|
2月前
|
存储 C#
【C#】大批量判断文件是否存在的两种方法效率对比
【C#】大批量判断文件是否存在的两种方法效率对比
51 1
|
2月前
|
C#
C#的方法的参数传递
C#的方法的参数传递
25 0
下一篇
DataWorks