为Rest Web Service创建WCF代理

时间:2011-05-16 20:51:00

标签: .net wcf rest wcf-rest

我有一个复杂的WCF Rest服务,它接受多个输入和对象。我不能简单地通过在Fiddler中进行HTTP POST来调用它,因为有太多的数据要提供(我可以,但它将永远带我)。所以我想在代码中使用代理来完成它。有没有办法为.NET 4 WCF Rest服务生成代理?否则,你建议我允许我轻松测试服务吗?

感谢。

4 个答案:

答案 0 :(得分:8)

没有为WCF REST服务创建代理的标准方法(没有用于REST的WSDL,一个新兴标准,WADL,没有被广泛采用,WCF不支持它)。出于测试目的,您应该与客户端共享接口,并使用ChannelFactory< T> - 并在工厂的Endpoint属性中设置适当的行为,或使用帮助程序类WebChannelFactory< T>这适合你。

假设界面名为ITest,这就是你所拥有的:

Uri serviceUri = new Uri("http://my.service.com/endpoint");
WebChannelFactory<ITest> factory = new WebChannelFactory<ITest>(serviceUri);
ITest proxy = factory.CreateChannel();
Assert.AreEqual(9, proxy.Add(4, 5));

答案 1 :(得分:1)

虽然目前没有使用WCF REST服务创建代理的标准方法,但您可以使用REST Starter kit中的“将XML粘贴为类型”工具来执行此操作。这将在默认WCF /帮助页面中显示的xml中生成,并生成一个与结构匹配且可以使用的C#类。另外,请观看此视频,了解相关信息 - Consumer Twitter in 3 minutes

答案 2 :(得分:0)

您可以使用与非RESTful WCF服务相同的步骤创建代理:

// Create the proxy
ChannelFactory<IContract> channelFactory = new ChannelFactory<IContract>("endpointName");
var restfulProxy = factory.CreateChannel();

// Invoke a method
var response = proxy.MyRestfulMethod("param1", "param2");

答案 3 :(得分:-2)

svcutil.exe将创建一个代理类,您可以在调用应用程序中使用该代理类,以允许您调用适当的方法并在代码中传递参数