首页 > 代码库 > Post方式调用wcf服务
Post方式调用wcf服务
我们平常在PC端调用WCF服务,只要知道WCF服务的地址,客户端直接添加引用服务就可以使用了,殊不知还有其他方式,其实,我们也可以
通过HTTP POST的方式调用WCF服务,这样就不用添加引用了,在手机移动端开发后台服务,都是通过Post的形式调用WCF服务,当然,这种方式在PC也可以使用。
我们来看下面的一个简单示例。下面的示例演示了服务器端和客户端的简单通讯
服务器端返回一个JSON字符串,代码如下
契约定义
[csharp] view plaincopy
- [OperationContract]
- [WebInvoke(UriTemplate = "AddData", Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
- string AddData(Stream stream);
契约实现
[csharp] view plaincopy
- 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);
- }
客户端调用
[csharp] view plaincopy
- 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;
- }
- }
[csharp] view plaincopy
- string param = "appKey=44hbf622op&username=13011001233&sign=123456";
- postSend("http://localhost:17446/CusDataService.svc/AddData", param);
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。