2011-05-16 76 views
2

我有一个复杂的WCF Rest服务,它接受多个输入和对象。我不能简单地通过在Fiddler中执行HTTP POST来调用它,因为要提供的数据太多(我可以,但它会永远占用我的)。所以我想用代理来做代码。有没有办法为.NET 4 WCF休息服务生成代理?否则,你打算如何让我轻松测试该服务?为Rest Web Service创建WCF代理

谢谢。

回答

8

有一个WCF REST服务创建一个代理(没有WSDL的休息,一个新兴的标准,WADL的没有标准的方式,没有被广泛采用,WCF不支持它)。出于测试目的,您应该与客户端共享接口,并使用ChannelFactory <T>-并在工厂的端点属性中设置相应的行为,或使用帮助程序类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)); 
-2

svcutil.exe将创建一个代理类,你可以在调用应用程序消耗,让你调用相应的方法和代码,通过参数

+2

svcutil不适用于REST端点 - 它不理解诸如[WebGet]或[WebInvoke]之类的属性,因为它们不在服务的WSDL /元数据中公开。 – carlosfigueira 2011-05-16 21:34:52

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"); 
+0

如果在config中定义的“端点”使用适当的绑定(例如WebHttpBinding)和行为(例如WebHttpBehavior)正确设置,那么这将工作,但出于测试目的,我发现通常更容易将所有信息保存在一个位置(码)。 – carlosfigueira 2011-05-16 21:38:11

1

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