我获得了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.
答案 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。