最近以做一个种类
,需要我们举行一个物,我们姑且叫数据共享吧,我们企业叫A公司,对方公司叫B公司,就是A公司供一个数据服务接口出去,B公司如果想以我们数的时节一直调用我们的服务接口就尽了,我们一致要拿走对方B方的数量,直接以对方的数量,经过商讨我们决定用WCF服务的REST方式进行数据共享,数据格式采用json,POST
方式进行呼吁

    1,首先就是是我们如果进行发布我们的数据,如何勾勒一个WCF REST
服务啊,请看我之就篇稿子http://www.cnblogs.com/huchaoheng/p/6379026.html 

1)接口如下:

 [OperationContract]
        [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.Wrapped)]
        string GetProductListByCategoryName(string categoryName);

2) 实现接口: 

JsonConvert真的很厉害,可以将json  与object 进行互换

public string GetProductListByCategoryName(string categoryName)
        {
            List<Product> ProductList = Products.Instance.ProductList.Where(t => t.CategoryName == categoryName).ToList();
            var result = JsonConvert.SerializeObject(ProductList);
            return result;
        }

 

    2,如何发布一个WCF服务 呢,我们懂得WCF服务可存放到IIS
上,其实不止是IIS,现在我们姑且寄存到IIS上去,发布好之顺序,启用32号程序改成为True

图片 1

   3,现在我们的劳动已经发表好了,我们该怎么开展得呢。发布好之程序
点击URL 如下图所示:

图片 2

 

 

1)首先wcf rest  服务一定与一个URL  我们这里怎么进行呼吁一个URL
呢,我们得用到  HttpWebRequest ,这个怎么用,可以参考
 http://www.cnblogs.com/kissdodog/archive/2013/04/06/3002779.html
 别人写的博客,还不错 我们今天只要写好的伸手URL 的方法
,这样尽管足以轻松的得获取到发表服务的json 格式

 

  /// <summary>
        /// huchao 
        /// 数据请求
        /// 2017.2.12
        /// </summary>
        /// <param name="url">wcf rest 请求地址</param>
        /// <param name="parametrds">wcf rest 服务请求参数 此处为json 格式</param>
        /// <returns></returns>
        public string GetResponeDataByPost(string url, string parametrds)
        {
            //进行数据请求
            HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url);
            httpRequest.ContentType = "application/json";
            httpRequest.Method = "POST";
            byte[] payload;
            payload = Encoding.UTF8.GetBytes(parametrds);
            httpRequest.ContentLength = payload.Length;
            Stream pRequestStream = httpRequest.GetRequestStream();
            pRequestStream.Write(payload, 0, payload.Length);
            pRequestStream.Close();
            //获得相应
            HttpWebResponse httpRespone = (HttpWebResponse)httpRequest.GetResponse();
            var myStream = httpRespone.GetResponseStream();
            StreamReader StreamReader = new StreamReader(myStream, Encoding.UTF8);
            var data = StreamReader.ReadToEnd();
            StreamReader.Close();
            myStream.Close();
            return data;
        }

2)下面我们设描绘单近乎进行传播url  还有咱们的参数

  public List<Product> GetObject(string servicesFullUrl, Object ParamInput)
        {
            var ParamInputs = JsonConvert.SerializeObject(ParamInput);

            string s = GetResponeDataByPost(servicesFullUrl, ParamInputs);
          return JsonConvert.DeserializeObject<List<Product>>(s);

        }

然是不是能够得到我们想只要之结果也,此处得到的s为下面图所示:

图片 3 

我们调用 JsonConvert.DeserializeObject<List<Product>>(s);
 会报错: 因为地方的取得json 并无能够直接反序列化到list
 需要我们多少处理下:参考博客:http://blog.csdn.net/yyixin/article/details/7243472

 /// <summary>
        /// json 反序列化到Dictionary
        /// </summary>
        /// <param name="strJson"></param>
        /// <returns></returns>
        public Dictionary<string, string> JsonToDictionary (string  strJson) 
        {
            JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
            return  jsSerializer.Deserialize<Dictionary<string, string>>(strJson);
        }

3)上面的方法重复勾为

图片 4

 

 重新输入参数

GetObject(“http://localhost:8011/ProductRESTService.svc/GetProductListByCategoryName”,
new
{
categoryName = “Category 1”,

});

 

然后就是好取到公布之数据 此处注意  categoryName  必须和公布之次的
参数名称 categoryName 相同,否则数据获得不交.

 

 

欢迎大家留言,我拿第一时间进行回复

 

 

 

 

 

  

 

   

相关文章

网站地图xml地图