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

Can I communicate to a WCF (svcutil) web service using just GET or POST?

我已获准访问 WCF/WSDL 网络服务。我首先这样做:

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

生成我需要的 C# class。然后我将这个 class 插入我的 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.

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

"default"(阅读:最常用)绑定(basicHttp 和 wsHttp)分别实现 SOAP 1.1 和 SOAP 1.2,这意味着您正在与服务对话 HTTP,但使用特制的 XML 必须包裹您的有效载荷的信封。

当应用webHttpBinding时,您可以"plain old XML"或JSON与服务对话,如何实现取决于应用的UriTemplate。

请注意,REST 服务没有标准化的元数据交换(至少就 WCF 而言是这样),因此即使如果服务是使用 REST 绑定公开的,有关如何构建调用的信息不会自动公开,而必须由所有者明确记录。

REST 是一种架构方法。 WCF 服务应该为 REST 构建,而不是你可以像这样使用它。在 WCF 服务中 "by default" 所有请求都是 POST。