2016-06-25 8 views
0

WCF/WSDL 웹 서비스에 대한 액세스 권한이 부여되었습니다. 먼저이 작업을 수행합니다.GET 또는 POST를 사용하여 WCF (svcutil) 웹 서비스와 통신 할 수 있습니까?

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

필요한 C# 클래스를 생성합니다. 그런 다음이 클래스를 C# 응용 프로그램에 연결하면 제대로 작동합니다. 이 서버를 개발하지 않았으므로 변경할 수 없습니다.

질문은 이것이다 :

내가는 svcutil하지 않고이 서버와 통신 할 수있는 방법

? 나는 단지 REST (GET 및 POST)를 사용하는 것을 선호한다.

이 방법을 사용하면 Windows가 아닌 Linux 또는 Mac 컴퓨터에서 연결할 수 있습니다. 내 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. 

답변

1

.

"기본"(읽기 : 가장 일반적으로 사용되는) 바인딩 (basicHttp 및 wsHttp)은 SOAP 1.1 및 SOAP 1.2를 각각 구현합니다. 즉, 서비스에 HTTP를 사용하지만 특수하게 조작 된 XML 봉투를 사용합니다. 페이로드는 랩핑되어야합니다.

webHttpBinding이 적용되면 "일반 오래된 XML"또는 JSON을 서비스에 알릴 수 있습니다. 적용하는 방법은 적용된 UriTemplate에 따라 다릅니다.

REST 서비스에 대한 표준 메타 데이터 교환이 없다는 점에 유의하십시오. (적어도 WCF와 관련된 것은 아닙니다) 서비스가 REST 바인딩을 사용하여 노출 된 경우에도 호출 구성 방법에 대한 정보는 제공되지 않습니다. 자동적으로 드러내지 만 소유자가 명시 적으로 문서화해야합니다.

+0

질문이 업데이트되었습니다. 그것은 WSHttpBinding을 사용하고 있습니다. 이것이 당신이 말한대로 SOAP 1.2를 사용한다는 것을 의미합니까? 그렇다면이 봉투의 형식을 어떻게 얻을 수 있습니까? (안타깝게도 웹 브라우저에서 서비스 URL을 방문하면 봉투 형식이 표시되지 않으며 svcutil.exe를 실행하는 지침과 일부 C# 코드가 표시됩니다 .SOAP 봉투 XML 형식을 얻는 다른 방법이 있습니까?) –

+0

자신 만의 SOAP 클라이언트를 작성하려는 이유가 약간 명확하지 않습니다. SvcUtil의 문제점은 무엇입니까? 어쨌든 질문 _ "HTTP 클라이언트를 사용하여 C# SOAP 클라이언트를 작성하는 방법 _"은 너무 광범위하여 대답 할 수는 없지만 웹에서이를 검색 할 수 있습니다. – CodeCaster

+0

@ code-ninja-54321 예를 들어 [참조를 추가하지 않고 웹 서비스?] (http://stackoverflow.com/questions/9482773/web-service-without-adding-a-reference)를 참조하십시오. – CodeCaster

-1

REST은 아키텍처 방식입니다. WCF 서비스는 REST를 위해 만들어 져야한다. "기본적으로"WCF 서비스에서 모든 요청은 POST입니다.