Могу ли я связаться с веб-службой WCF (svcutil), используя только GET или POST?
Мне был предоставлен доступ к веб-сервису WCF/WSDL. Сначала я делаю это:
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 ответа
Это зависит от привязок, используемых службой.
Привязки "по умолчанию" (читай: наиболее часто используемые) (basicHttp и wsHttp) реализуют SOAP 1.1 и SOAP 1.2 соответственно, что означает, что вы обращаетесь к сервису по протоколу HTTP, но используете специально созданный конверт XML, в который должна быть включена ваша полезная нагрузка.,
Когда применяется webHttpBinding, вы можете говорить "простым старым XML" или JSON со службой, как это сделать, зависит от примененного UriTemplate.
Обратите внимание, что не существует стандартизированного обмена метаданными для служб REST (по крайней мере, в том, что касается WCF), поэтому даже если служба предоставляется с использованием привязки REST, информация о том, как создать вызовы, не будет предоставляться автоматически, а должна вместо этого быть документально подтвержденным владельцами.
ОТДЫХ - это архитектурный подход. Служба WCF должна быть построена для REST, а не для того, чтобы ее можно было использовать вот так. В сервисе WCF "по умолчанию" все запросы являются POST.