• Post方式调用wcf服务


     我们平常在PC端调用WCF服务,只要知道WCF服务的地址,客户端直接添加引用服务就可以使用了,殊不知还有其他方式,其实,我们也可以

    通过HTTP POST的方式调用WCF服务,这样就不用添加引用了,在手机移动端开发后台服务,都是通过Post的形式调用WCF服务,当然,这种方式在PC也可以使用。

    我们来看下面的一个简单示例。下面的示例演示了服务器端和客户端的简单通讯

    服务器端返回一个JSON字符串,代码如下

    契约定义

    1 [OperationContract]  
    2  [WebInvoke(UriTemplate = "AddData", Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]  
    3  string AddData(Stream stream);  

    契约实现

     1 public string AddData(Stream stream)  
     2    {  
     3        StreamReader sr = new StreamReader(stream);  
     4        string s = sr.ReadToEnd();  
     5        sr.Dispose();  
     6        NameValueCollection nvc = HttpUtility.ParseQueryString(s);  
     7   
     8        string appKey = nvc["appKey"];  
     9        string sign = nvc["sign"];  
    10        string name=nvc["username"];  
    11   
    12        var result = new ErrorModel  
    13        {  
    14            IsError = true,  
    15            ErrorCode = -2,  
    16            ErrorMsg = "操作信息",  
    17        };  
    18        return new JavaScriptSerializer().Serialize(result);  
    19    }  

     客户端调用

     1 public static string postSend(string url, string param)  
     2        {  
     3            Encoding myEncode = Encoding.GetEncoding("UTF-8");  
     4            byte[] postBytes = Encoding.UTF8.GetBytes(param);  
     5   
     6            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);  
     7            req.Method = "POST";  
     8            req.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";  
     9            req.ContentLength = postBytes.Length;  
    10   
    11            try  
    12            {  
    13                using (Stream reqStream = req.GetRequestStream())  
    14                {  
    15                    reqStream.Write(postBytes, 0, postBytes.Length);  
    16                }  
    17                using (WebResponse res = req.GetResponse())  
    18                {  
    19                    using (StreamReader sr = new StreamReader(res.GetResponseStream(), myEncode))  
    20                    {  
    21                        string strResult = sr.ReadToEnd();  
    22                        return strResult;  
    23                    }  
    24                }  
    25            }  
    26            catch (WebException ex)  
    27            {  
    28                return "无法连接到服务器
    错误信息:" + ex.Message;  
    29            }  
    30        }  
    1 string param = "appKey=44hbf622op&username=13011001233&sign=123456";  
    2   
    3             postSend("http://localhost:17446/CusDataService.svc/AddData", param);  
    1 <services>  
    2   <service behaviorConfiguration="RESTBehaviour" name="Jawasoft.TrackCodeService.Server.TrackCodeService">  
    3     <endpoint address="" behaviorConfiguration="webHttp" binding="webHttpBinding"  
    4 ame="post" contract="Jawasoft.TrackCodeService.Server.ITrackCodeService"/>  
    5   
    6   </service>  
    7 </services>  

    转载:

    http://blog.csdn.net/zx13525079024/article/details/27069379

  • 相关阅读:
    thinkphp5.0与thinkphp3.2之间的区别
    比较数组大小
    PHP语言开发微信公众平台(订阅号)之curl命令(补充)
    ThinkPHP3.2.3快速入门:基础篇
    phpcms利用表单向导创建留言板(可以回复)
    Vijos P1782 借教室 ( 前缀和&&差分序列)
    HDU2648:Shopping(DKBR_hash)
    Codeforces Round #375 (Div. 2)
    BestCoder Round #88
    Codeforces Round #373 (Div. 2)
  • 原文地址:https://www.cnblogs.com/sunice/p/7678767.html
Copyright © 2020-2023  润新知