三种客户端访问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 =
时间: 2025-01-11 09:21:20

三种客户端访问wcf服务端的方法 C#的相关文章

在C#中WCF服务端在客户端断开时清除资源

问题描述 在C#中WCF服务端如何如何知道客户端断开时清除资源 解决方案 解决方案二:你可以监听所有客户端与服务链接的Closing事件.OperationContext.Current.Channel.Closing+=newEventHandler(Channel_Closing);只适合支持Session的binding.其它参考:解决方案三:所谓"使用资源的方法"内部确保在返回之前"释放资源"就行了.

socket客户端有几种发送消息到服务端的方式,服务端应该怎么取出这个值

问题描述 socket客户端有几种发送消息到服务端的方式,服务端应该怎么取出这个值 场景,我有一个服务端,客户端是超级网口USR-K3的TCPClient.K3发送消息给我服务端时,已经跟我建立连接,服务端已经看到了它的IP和端口,但是在取出K3发过来的值时,显示为"null".求大神告知是不是我取值的方法和K3放值得方法不一样才取不出值. 解决方案 public void run() { try { // 采用循环不断从Socket中读取客户端发送过来的数据 while (true)

epoll异步服务端程序,客户端采用多线程访问,服务端总是返回errno 9和107

问题描述 epoll异步服务端程序,客户端采用多线程访问,服务端总是返回errno 9和107 #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define MAX_EVENTS 65535 #define SERVER_PORT 8887 #defi

WCF服务端运行时架构体系详解[下篇]

作为WCF中一个核心概念,终结点在不同的语境中实际上指代不同的对象.站在服务描述的角度,我们所说的终结点实际上是指ServiceEndpoint对象.如果站在WCF服务端运行时框架来说,终结点实际上指代的是终结点分发器(EndpointDispatcher).而ServiceEndpoint与EndpointDispatcher是一一匹配的,并且前者是创建后者的基础.而终结点分发器具有自己的运行,即分发运行时(DispatchRuntime). 目录 一.终结点分发器(EndpointDispa

WCF服务端运行时架构体系详解[上篇]

WCF的服务端架构体系又可以成为服务寄宿端架构体系.我们知道,对于一个基于某种类型的服务进行寄宿只需要使用到一个唯一的对象,那就是ServiceHost.甚至在某种语境下,我们所说的服务实际上就是指的对应的ServiceHost对象.整个服务寄宿过程包括两个阶段,即服务描述的创建和服务端运行框架的建立.而第一个阶段创建的服务描述是为了第二个阶段对服务端运行时框架建立服务的,所以我们有必要在对服务描述进行简单的介绍. 目录: 一.从服务描述(Service Description)谈起 二.服务端

WCF服务端运行时架构体系详解[续篇]

终结点分发器在自己的运行时中对请求消息的处理最终肯定体现在相应操作的执行.如果从服务描述的角度来看,操作是一个OperationDescription对象.而服务端分发运行时中的操作则代表的是一个DispatchOperation对象.作为服务描述的一部分,服务所有终结点的所有操作描述(OperationDescription)在ServiceHost创建过程中被创建.而当ServiceHost被正常开始时,这些操作描述最终转换成分发操作(DispatchOperation).而Dispatch

ISA&amp;amp;TMG三种客户端模式简介(四) Web代理 客户端

在前面几次,我们主要聊到了TMG/ISA中的三种客户端中的"防火墙客户端"."Secure NAT客户端模式"今天呢,我们就来聊聊第三种客户端模式"Web 代理客户端".那么接下来我们来看看"web 代理客户端"向服务器端口发送请求的客户端应用程序或计算机的端口有哪些呢? 1.ISA 服务器计算机上的端口 80. 2. ISA 服务器侦听来自客户端计算机所在网络的传出 Web 请求时所用的端口.默认情况下,ISA 服务器在端口

ISA&amp;amp;TMG三种客户端模式简介(一)

最近 一直在忙于研究微软TMG产品遇到CDN技术后站点页面中应用CDN技术的内容就会发现显示不太稳定,同微软的一些同仁聊了很多解决方法,但是一直没有找一到一个合适的解决方法,没办法,只能研究一下看看从微软的三种客户端模式中是否有能解决现在面临的问题. 也顺便回顾了一下微软的三种客户端模式及ISA和TMG,也想借此次对三种客户端模式的一个回顾做一个整理,同时也分享给更多需要的博友. 谈到防火墙产品很多人会想到思科.华为.H3C.juniper等一些网络产商所提供的硬件防火墙产品,但其实在微软也提供

请问Socket客户端如何像服务端一样自动监听远程终端是否连接上

问题描述 今天偶然发现Socket服务端可以通过Socket.Accept();自动检测远程终端是否连接,即使网络中断也不会报异常,当网络恢复后又自动连接上,不用做任何判断.抛异常和显示重连.请问客户端如何像服务端一样实现上述功能? 解决方案 解决方案二: 解决方案三:参考你需要的解决方案四:Accept是等待"任意"客户端连接.如果网络中断,自然就没有客户端连接.此时它抛异常干什么?人家根本没有的逻辑,你硬说它有那个"抛异常.显示重联",是何道理?解决方案五:引用