WSDL 사용 방법


126

웹 서비스를 사용해야합니다. 그들은 저에게 WSDL 파일을 보냈습니다. 내 웹 사이트에 추가하고 프록시로 사용하려면 어떻게해야합니까? (가상 디렉토리에 넣으면 발견 될 수 있지만 실제 웹 서비스와의 연결을 허용합니까?)


9
글쎄, 나는 여기에있는 다른 사용자가 답변을 보는 것이 도움이 될 것이라고 생각하는 질문이기 때문에 투표했습니다. 이 정확한 문제를 찾고 있었는데 여기서 발견하게되어 기쁩니다.
schizoid04 2015 년

답변:


138

Visual Studio를 시작하고 웹 프로젝트 (또는 콘솔 앱-중요하지 않음)를 만듭니다.

.Net 표준의 경우 :

  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴 추가 에서 "서비스 참조 추가"를 선택 합니다.
  2. 고급을 클릭 한 다음 서비스 참조 추가를 클릭합니다.
  3. wsdl의 전체 파일 경로를 가져와 주소 표시 줄에 붙여 넣습니다. 그런 다음 화살표 (이동 버튼)를 발사합니다.
  4. 파일을로드하는 동안 오류가 발생하면 아래와 같이 파일이 해결해야하는 문제가 있고 해결되지 않은 URL이 있어야합니다. 해결 여기에 이미지 설명 입력 방법에 대한 정보는이 답변을 참조하십시오 . wsdl 파일

오류가없는 경우 서비스에 액세스하는 데 사용할 네임 스페이스를 설정하기 만하면 자동으로 생성됩니다.

.Net Core 용

  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴 추가에서 연결된 서비스를 선택합니다.
  2. 목록에서 Microsoft WCF 웹 서비스 참조 공급자를 선택합니다.
  3. 찾아보기를 누르고 바로 wsdl 파일을 선택하고 네임 스페이스를 설정하면됩니다. 오류가 발생하면 위의 오류 수정 URL을 참조하세요.

위의 모든 방법은 사용할 수있는 간단하고 매우 기본적인 WCF 클라이언트를 생성합니다. 생성 된 코드에서 "YourservicenameClient"클래스를 찾아야합니다.

참조 목적으로 생성 된 cs 파일은 Obj / debug (또는 릴리스) / XsdGeneratedCode에서 찾을 수 있으며 TempPE 폴더에서 여전히 dll을 찾을 수 있습니다.

생성 된 서비스에는 WSDL 계약에 정의 된 각 메서드에 대한 메서드가 있어야합니다.

클라이언트를 인스턴스화하고 호출하려는 메소드를 호출하십시오. 그게 전부입니다!

YourServiceClient client = new YourServiceClient();
client.SayHello("World!");

원격 URL을 지정해야하는 경우 (기본적으로 생성 된 URL을 사용하지 않음) 프록시 클라이언트의 생성자에서 쉽게 수행 할 수 있습니다.

YourServiceClient client = new YourServiceClient("configName", "remoteURL");

여기서는 configName사용할 끝점의 이름 (URL을 제외한 모든 설정 사용) remoteURL이고은 연결할 URL을 나타내는 문자열입니다 (구성에 포함 된 이름 대신).


이것은 잘 작동합니다. 내 컴퓨터에 wsdl 파일이 있고이 파일에 대한 참조를 추가하는 경우 한 가지 질문 만 있습니다. Url을 실행할 때 웹 서비스를 호스팅하는 것이 적중합니다. 아니면 Binding과 EndPoint를 지정해야합니까?
jmayor

1
이는 사용자에게 달려 있습니다. 기본적으로 클라이언트 프록시 용으로 생성 된 코드는 WSDL 내에 포함 된 URL을 갖게됩니다. 다른 URL로 이동해야하는 경우 직접 지정해야합니다.
marc_s 2009-08-20

왜 그렇게 쉬운가요? 캐치가 없습니까? : p 감사합니다!
Odys 2013-06-05

1
허용되는 답변으로 URL에서 웹 호스팅 WSDL을 사용하는 방법도 언급했다면 좋을 것입니다.
Caltor 2017-04-12

나는 이것이 작동하도록 꽤 가깝다고 생각합니다. 서비스 참조 추가 도구를 사용하여 웹 서비스를 설치했습니다. 클라이언트를 인스턴스화 할 수 있지만 메서드를 호출하면 실패합니다. 끝점은 Java 구현을 사용하는 것이며 내가 볼 수있는 것은 XML뿐입니다. 내가 호출하려는 방법은 clientid와 "다른 것"을 찾는 것입니다. 다른 것은 수업입니다. 수수께끼입니다. 도움이된다면 아래 게시물에 게시 할 수 있지만 당황 스럽습니다.
mappingman

45

비주얼 스튜디오에서.

  • 프로젝트를 만들거나 엽니 다.
  • 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하십시오.
  • "서비스 참조 추가"를 선택합니다.
  • 받은 WSDL로 주소를 붙여 넣으십시오.
  • 확인을 클릭하십시오.

오류가 없으면 개체 브라우저 및 모든 관련 메서드에서 서비스 참조를 볼 수 있어야합니다.


9
<3 Visual Studio .. 예, 정말 간단합니다. :)
cwap

3
OP에는 주소가 아니라 파일이 있습니다.
Henk Holterman

1
웹 서비스 공급자가 WSDL (모호성에 의한 보안)을 비활성화했을 수 있으므로 WSDL에 액세스 할 수있는 URL이 없으며 VS에 웹 참조를 추가해도 작동하지 않습니다. 그러나 공급자는 서비스 계약에 대해 알아야 할 모든 것을 귀하 (OP를 의미합니다)가 알기를 원하므로 WSDL 파일을 보냈습니다. 이제 OP는 프록시 코드를 생성해야합니다. 문제는 방법입니다.
azheglov

3
파일 경로를 입력합니다. 작동하지 않는다고 생각하는 이유는 무엇입니까?
John Saunders

1
안녕하세요 @vidalsasoon. 클래스 탐색기에서 볼 수있는 이러한 클래스를 사용하는 방법을 간략하게 설명해 주시겠습니까? ?
CalZone 2013

16

WSDL.EXE 유틸리티 를 사용 하여 WSDL에서 웹 서비스 프록시를 생성합니다.

다음과 같은 클래스가 포함 된 긴 C # 소스 파일이 생성됩니다.

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="MyService", Namespace="http://myservice.com/myservice")]
public partial class MyService : System.Web.Services.Protocols.SoapHttpClientProtocol {
    ...
}

클라이언트 측 웹 서비스 소비 코드에서 :

  1. MyService를 인스턴스화하십시오.
  2. Url 속성 설정
  3. 웹 메소드 호출

5
이렇게하면 "구식"ASMX 웹 서비스가 생성됩니다. 이러한 서비스는 더 이상 사용되지 않습니다. 현재 대신 WCF를 사용해야합니다.
marc_s

7

.Net Core 프로젝트 에 wsdl 참조를 추가하려는 경우 "웹 참조 추가"옵션이 없습니다.

wsdl 참조를 추가하려면 솔루션 탐색기로 이동하여 참조 프로젝트 항목을 마우스 오른쪽 단추로 클릭 한 다음 연결된 서비스 추가 옵션 을 클릭합니다 .

여기에 이미지 설명 입력

그런 다음 'Microsoft WCF 웹 서비스 참조'를 클릭합니다.

여기에 이미지 설명 입력

URI 텍스트 상자에 파일 경로를 입력하고 WSDL을 가져옵니다.

여기에 이미지 설명 입력

간단하고 매우 기본적인 WCF 클라이언트를 생성하고 다음과 같이 사용합니다.

YourServiceClient client = new YourServiceClient();
client.DoSomething();

이 확장 프로그램이 표시되지 않습니다.
Rafael Pizao
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.