[数据共享(干货)] wcf rest 服务发布数据 以及获得数据
最近在做一个项目 ,需要我们做一个东西,我们姑且叫数据共享吧,我们公司叫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

3,现在我们的服务已经发布好了,我们该如何进行获取呢。发布好的程序 点击URL 如下图所示:

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, , 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为下面图所示:

我们调用 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)上面的方法重新写为

重新输入参数
GetObject("http://localhost:8011/ProductRESTService.svc/GetProductListByCategoryName", new
{
categoryName = "Category 1",
});
然后就可以获取到发布的数据 此处注意 categoryName 必须和发布的程序的 参数名称 categoryName 相同,否则数据获取不到.
欢迎大家留言,我将第一时间进行回复
[数据共享(干货)] wcf rest 服务发布数据 以及获得数据的更多相关文章
- Cesium本地影像与地形服务发布
目录 1 数据切片 1.1 影像处理 1.2 地形处理 2 Web应用服务器安装与配置 2.1 Tomcat安装及配置 2.2 IIS安装及配置 3 本地影像与地形服务发布 4 参考资料 @(目录) ...
- WCF技术剖析之二十七: 如何将一个服务发布成WSDL[基于HTTP-GET的实现](提供模拟程序)
原文:WCF技术剖析之二十七: 如何将一个服务发布成WSDL[基于HTTP-GET的实现](提供模拟程序) 基于HTTP-GET的元数据发布方式与基于WS-MEX原理类似,但是ServiceMetad ...
- WCF技术剖析之二十七: 如何将一个服务发布成WSDL[基于WS-MEX的实现](提供模拟程序)
原文:WCF技术剖析之二十七: 如何将一个服务发布成WSDL[基于WS-MEX的实现](提供模拟程序) 通过<如何将一个服务发布成WSDL[编程篇]>的介绍我们知道了如何可以通过编程或者配 ...
- WCF技术剖析之二十七: 如何将一个服务发布成WSDL[编程篇]
原文:WCF技术剖析之二十七: 如何将一个服务发布成WSDL[编程篇] 对于WCF服务端元数据架构体系来说,通过MetadataExporter将服务的终结点导出成MetadataSet(参考< ...
- WCF服务发布到IIS中去 在WCF调试
第一个WCF程序 1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序.建立完成后如下图所示: 2.删除系统生成的两个文件IService1.cs与Service1.svc ...
- WCF开发实战系列四:使用Windows服务发布WCF服务
WCF开发实战系列四:使用Windows服务发布WCF服务 (原创:灰灰虫的家http://hi.baidu.com/grayworm) 上一篇文章中我们通过编写的控制台程序或WinForm程序来为本 ...
- WCF服务发布到IIS中去(VS2013+win7系统)
第一个WCF程序 1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序.建立完成后如下图所示: 2.删除系统生成的两个文件IService1.cs与Service1.svc ...
- Webservice WCF WebApi 前端数据可视化 前端数据可视化 C# asp.net PhoneGap html5 C# Where 网站分布式开发简介 EntityFramework Core依赖注入上下文方式不同造成内存泄漏了解一下? SQL Server之深入理解STUFF 你必须知道的EntityFramework 6.x和EntityFramework Cor
Webservice WCF WebApi 注明:改编加组合 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下, ...
- 在 Node.js 上调用 WCF Web 服务
摘要:有时我们需要在WCF中做一些复杂数据处理和逻辑判断等,这时候就需要在NodeJS中调用WCF服务获取数据,这篇文件介绍如何在Node中调用WCF服务获取数据. Node项目中调用WCF服务获取数 ...
随机推荐
- (简单) POJ 2492 A Bug's Life,二分染色。
Description Background Professor Hopper is researching the sexual behavior of a rare species of bugs ...
- jstl-按照html的形式输出至页面
一.按照html的形式输出至页面 <c:out value="${xxx}" default="默认值" escapeXml="false&qu ...
- jQuery 页面加载事件
页面加载完成有两种事件,一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件),二是onload,指示页 面包含图片等文件在内的所有元素都加载完成.(可以说:ready 在onload ...
- 【iScroll源码学习01】准备阶段 - 叶小钗
[iScroll源码学习01]准备阶段 - 叶小钗 时间 2013-12-29 18:41:00 博客园-原创精华区 原文 http://www.cnblogs.com/yexiaochai/p/3 ...
- linux命令学习-2-dmesg
DMESG NAME dmesg - print or control the kernel ring buffer(打印或者控制内核环缓冲) Usage: dmesg [options] Optio ...
- HIDKomponente使用读写Hid设备(转)
源:HIDKomponente使用读写Hid设备一瞥 HIDKomponente 是delphi中使用的第三方Hid控件库,可以检测.控制连接到电脑的Hid设备.一般情况下多为usb设备. HIDKo ...
- Ehcache jgroups方式同步缓存出现问题总结
ehcache配置文件按官网配置如下: <?xml version="1.0" encoding="UTF-8"?> <ehcache> ...
- UVa 136 - Ugly Numbers
题目大意:只有素因子2,3,5的数叫做丑数.输出第1500个丑数即可. 这个...好吧,直接输出就是了.自己写一个小程序先计算一下,这就是黑盒测试的好处啊,“我们的目标是解决问题,而不是为了写程序而写 ...
- 刪除預裝在windows 10 的app
刪除預裝在windows 10 的app 步驟: 方法一.(易於解除安裝的app) 1. →按"開始標誌" →"所有應用程式" →在想解除的程式圖示上" ...
- OC--初始化UINavigationController
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...