Post方式调用wcf服务
我们平常在PC端调用WCF服务,只要知道WCF服务的地址,客户端直接添加引用服务就可以使用了,殊不知还有其他方式,其实,我们也可以
通过HTTP POST的方式调用WCF服务,这样就不用添加引用了,在手机移动端开发后台服务,都是通过Post的形式调用WCF服务,当然,这种方式在PC也可以使用。
我们来看下面的一个简单示例。下面的示例演示了服务器端和客户端的简单通讯
服务器端返回一个JSON字符串,代码如下
契约定义
- [OperationContract]
- [WebInvoke(UriTemplate = "AddData", Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
- string AddData(Stream stream);
契约实现
- public string AddData(Stream stream)
- {
- StreamReader sr = new StreamReader(stream);
- string s = sr.ReadToEnd();
- sr.Dispose();
- NameValueCollection nvc = HttpUtility.ParseQueryString(s);
- string appKey = nvc["appKey"];
- string sign = nvc["sign"];
- string name=nvc["username"];
- var result = new ErrorModel
- {
- IsError = true,
- ErrorCode = -2,
- ErrorMsg = "操作信息",
- };
- return new JavaScriptSerializer().Serialize(result);
- }
客户端调用
- public static string postSend(string url, string param)
- {
- Encoding myEncode = Encoding.GetEncoding("UTF-8");
- byte[] postBytes = Encoding.UTF8.GetBytes(param);
- HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
- req.Method = "POST";
- req.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
- req.ContentLength = postBytes.Length;
- try
- {
- using (Stream reqStream = req.GetRequestStream())
- {
- reqStream.Write(postBytes, 0, postBytes.Length);
- }
- using (WebResponse res = req.GetResponse())
- {
- using (StreamReader sr = new StreamReader(res.GetResponseStream(), myEncode))
- {
- string strResult = sr.ReadToEnd();
- return strResult;
- }
- }
- }
- catch (WebException ex)
- {
- return "无法连接到服务器\r\n错误信息:" + ex.Message;
- }
- }
- string param = "appKey=44hbf622op&username=13011001233&sign=123456";
- postSend("http://localhost:17446/CusDataService.svc/AddData", param);
Post方式调用wcf服务的更多相关文章
- WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载]
原文:WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载] 我们有两种典型的WCF调用方式:通过SvcUtil.exe(或者添加Web引用)导入发布的服务元数据生成服务代理相关的代码 ...
- 完全使用接口方式调用WCF 服务
客户端调用WCF服务可以通过添加服务引用的方式添加,这种方式使用起来比较简单,适合小项目使用.服务端与服务端的耦合较深,而且添加服务引用的方式生成一大堆臃肿的文件.本例探讨一种使用接口的方式使用WCF ...
- 调用WCF服务的几种方式
首先发布了一个名为PersonService的WCF服务.服务契约如下: [ServiceContract] public interface IPersonService { ...
- 实现jquery.ajax及原生的XMLHttpRequest跨域调用WCF服务的方法
关于ajax跨域调用WCF服务的方法很多,经过我反复的代码测试,认为如下方法是最为简便的,当然也不能说别人的方法是错误的,下面就来上代码,WCF服务定义还是延用上次的,如: namespace Wcf ...
- 实现jquery.ajax及原生的XMLHttpRequest调用WCF服务的方法
废话不多说,直接讲解实现步骤 一.首先我们需定义支持WEB HTTP方法调用的WCF服务契约及实现服务契约类(重点关注各attribute),代码如下: //IAddService.cs namesp ...
- SharePoint 2013 调用WCF服务简单示例
内容比较简单,主要记录自己使用SharePoint 2013WCF服务遇到的小问题和小经验,分享给大家,希望能够给需要的人有所帮助.好吧,进入正题! 第一部分 SharePoint 2013调用自带W ...
- [转]学习 WCF (6)--学习调用WCF服务的各种方法
转自:http://www.cnblogs.com/gaoweipeng/archive/2009/07/26/1528263.html 作者这篇博文写得很全面. 根据不同的情况,我们可以用不同的方法 ...
- Silverlight客户端调用WCF服务难题解疑
一:解决办法 Silverlight客户端调用WCF服务在实际使用中经常会出现的问题就是无法直接应用类文件和配置文件.微软针对这一情况已经给出了解决办法.WCF开发框架可以帮助我们实现可靠性较高的跨平 ...
- 学习之路十四:客户端调用WCF服务的几种方法小议
最近项目中接触了一点WCF的知识,也就是怎么调用WCF服务,上网查了一些资料,很快就搞出来,可是不符合头的要求,主要有以下几个方面: ①WCF的地址会变动,地址虽变,但是里面的逻辑不变! ②不要引用W ...
随机推荐
- linux 2.6.xx自动加载kvm模块
在文件夹/etc/udev/rules.d/中添加文件65-kvm.rules,文件内容如下: KERNEL=="kvm", MODE="0660", GROU ...
- windows 简单api应用
//调用系统函数 将鼠标移动到相应位置 [DllImport("user32.dll", EntryPoint = "SetCursorPos")] publi ...
- signal(SIGCHLD, SIG_IGN)和signal(SIGPIPE, SIG_IGN);
signal(SIGCHLD, SIG_IGN); //忽略SIGCHLD信号,这常用于并发服务器的性能的一个技巧 //因为并发服务器常常fork很多子进程,子进程终结之后需要//服务器进程去wait ...
- linux挂载根文件系统过程
linux-2.6.36内核 start arch/arm/boot/compressed/head.S arch/arm/kernel/head.S start_kernel() ...
- Hadoop日志分析工具——White Elephant
White Elephant 是一个Hadoop日志收集器和展示器,它提供了用户角度的Hadoop集群可视化.White Elephant 是全球最大的职业社交网站Linkedin开发的一套分析Had ...
- linux下使用yum安装telnet
参考文章: http://futeng.iteye.com/blog/2039490?utm_source=tuicool&utm_medium=referral
- 【大数据笔记】白话详解Zookeeper的一致性
下面内容主要摘抄于<<Hadoop实战>>,红色高亮部分是本人添加的白话注释. Zookeeper 是一种高性能.可扩展的服务. Zookeeper 的读写速度非常快,并且读的 ...
- 【Qt Tips】QLineEdit内容过滤之setValidator和setInputMask浅析
1.QValidator分析 2.InputMask格式 3.测试代码和用例 项目路径: GitHub: https://github.com/Qunero/NeoQtTestDemo/tree/ma ...
- Android中新建的文件在R没有显示相应的文件解决的方法总结
我们有时会发现当我们新建一个文件或者目录在Generated Java Files(gen)文件的R.java中没有生成相应的静态类或者静态属性.此时你可能出现了以下的情况.注意參照解决. 一般正常情 ...
- 支持向量机(SVM)(三)-- 最优间隔分类器(optimal margin classifier)
在之前为了寻找最有分类器,我们提出了例如以下优化问题: 在这里我们能够把约束条件改写成例如以下: 首先我们看以下的图示: 非常显然我们能够看出实线是最大间隔超平面,如果×号的是正例,圆圈的是负例.在虚 ...