我可以使用GET或POST与WCF(svcutil)Web服务进行通信吗?

时间:2016-06-25 14:19:53

标签: wcf rest soap wsdl svcutil.exe

我获得了WCF / WSDL Web服务的访问权限。我先这样做:

svcutil.exe https://<thedomain>/foo/foo.svc?wsdl

生成我需要的C#类。然后我将这个类插入我的C#应用​​程序,它工作正常。 请注意,我没有开发此服务器,也无法更改它。

问题是:

如何在没有svcutil的情况下与此服务器通信?我更喜欢使用REST(GET和POST)。

通过这种方式,我可以从Linux或Mac机器连接到它,而不仅仅是Windows。

更新在我的C#代码中,会发生以下情况:

WSHttpBinding binding = new WSHttpBinding();
EndpointAddress endpoint =  new EndpointAddress("<address>");
fooClient client = new fooClient(binding, endpoint);
//(fooClient class came from svcutil)
//I now work with fooClient, call methods on it, etc.

2 个答案:

答案 0 :(得分:1)

这取决于服务使用的绑定。

“default”(读取:最常用)绑定(basicHttp和wsHttp)分别实现SOAP 1.1和SOAP 1.2,这意味着您正在与服务谈论HTTP,但使用特制的XML信封,其中包含有效负载必须被包裹。

当应用webHttpBinding时,您可以将“普通旧XML”或JSON与服务对话,如何执行此操作取决于应用的UriTemplate。

请注意,REST服务没有标准化的元数据交换(至少在WCF方面没有),所以即使如果使用REST绑定公开服务,也有关于如何构建的信息呼叫不会自动暴露,但必须由业主明确记录。

答案 1 :(得分:-1)

REST是一种架构方法。应该为REST构建WCF服务,而不是像这样使用它。在WCF服务&#34;默认情况下&#34;所有请求都是POST。