WSDLの使用方法


126

Webサービスを使用する必要があります。彼らは私にWSDLファイルを送りました。それを自分のウェブサイトに追加して、プロキシとして使い始めるにはどうすればよいですか。(仮想ディレクトリに配置した場合、検出できますが、実際のWebサービスとの接続は許可されますか?)


9
まあ、私は賛成票を投じたのは、ここにいる他のユーザーが答えを見ることから利益を得ると思う質問だからです。私はこの正確な問題を探していました、そしてここでそれを見つけてうれしいです。
schizoid04 2015

回答:


138

Visual Studioを起動して、Webプロジェクト(またはコンソールアプリ-関係ありません)を作成します。

.Net標準の場合:

  1. プロジェクトを右クリックして、[ 追加 ]コンテキストメニューから[サービス参照の追加 ]を選択します。
  2. Advancedをクリックしてから、Add Service Referenceをクリックします。
  3. wsdlの完全なファイルパスを取得し、アドレスバーに貼り付けます。次に、矢印(移動ボタン)を押します。
  4. ファイルを読み込もうとしてエラーが発生した場合、以下に示すように、ファイルが解決する必要のある壊れた未解決のURLが必要です。 ここに画像の説明を入力してください 修正方法については、この回答を参照してください: Stackoverflow回答:のサービス参照を作成できませんwsdlファイル

エラーがない場合は、サービスへのアクセスに使用する名前空間を設定するだけで、生成されます。

.Net Coreの場合

  1. プロジェクトを右クリックして、[追加]コンテキストメニューから[接続されたサービス]を選択します。
  2. リストからMicrosoft WCF Webサービス参照プロバイダーを選択します。
  3. 参照を押して、すぐにwsdlファイルを選択し、名前空間を設定します。エラーが発生した場合は、上記のエラー修正URLを参照してください。

上記の方法のいずれかを使用すると、シンプルで非常に基本的なWCFクライアントが生成されます。生成されたコードで「YourservicenameClient」クラスを見つける必要があります。

参考のために、生成されたcsファイルはObj / debug(またはrelease)/ XsdGeneratedCodeにあり、DLLはTempPEフォルダーにあります。

作成されたサービスには、WSDLコントラクトで定義された各メソッドのメソッドが必要です。

クライアントをインスタンス化して、呼び出すメソッドを呼び出します-それだけです!

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

(デフォルトで作成されたものを使用せずに)リモートURLを指定する必要がある場合は、プロキシクライアントのコンストラクターでこれを簡単に行うことができます。

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

ここで、configNameは使用するエンドポイントの名前(URLを除くすべての設定を使用します)であり、remoteURLは接続するURLを表す文字列です(構成に含まれているものではありません)。


これは正常に動作します。自分のマシンにwsdlファイルがあり、このファイルへの参照を追加した場合、1つだけ質問があります。Urlを実行するときにヒットするのはWebサービスをホストしているURLですか、それともBindingとEndPointを指定する必要がありますか?
jmayor 2009

1
それはあなた次第です-デフォルトでは、クライアントプロキシ用に作成されたコードには、WSDL内に含まれているURLが含まれます。別のURLに移動する必要がある場合は、自分で指定する必要があります。
marc_s 2009

なぜこんなに簡単なのですか?キャッチはありませんか?:pありがとう!
Odys 2013年

1
受け入れられた答えとして、URLからWebでホストされたWSDLを使用する方法についても言及するとよいでしょう。
Caltor 2017

私はこれを機能させるのにかなり近いと思います。Add Service Referenceツールを使用してWebサービスをインストールしました。クライアントをインスタンス化することはできますが、メソッドを呼び出すと失敗します。エンドポイントはJava実装の使用であり、私が見ることができるのはXMLだけです。私が呼び出そうとしているメソッドは、clientidと「何か他のもの」を探しています。その別のものはクラスです。これは不可解です。これが役立つ場合は、以下の投稿に追加できますが、困惑します。
マッピングマン'19 / 06/19

45

ビジュアルスタジオで。

  • プロジェクトを作成または開きます。
  • ソリューションエクスプローラーでプロジェクトを右クリックします。
  • 「サービス参照の追加」を選択します
  • 受け取ったWSDLにアドレスを貼り付けます。
  • OKをクリックします。

エラーがなければ、オブジェクト参照とすべての関連メソッドでサービス参照を確認できるはずです。


9
<3 Visual Studio ..はい、それは本当にとても簡単です:)
cwap '19

3
OPにはアドレスはありませんが、ファイルがあります。
ヘンクホルターマン

1
WebサービスのプロバイダーがWSDL(あいまいさによるセキュリティ)を無効にしている可能性があるため、WSDLにアクセスできるURLがないため、VSにWeb参照を追加しても機能しません。ただし、プロバイダーはあなた(つまりOP)がサービス契約について知っておく必要があるすべてのことを知っていることを望んでいます。そのため、WSDLファイルを送信しました。OPはプロキシコードを生成する必要があります。問題はその方法です。
azheglov、2009

3
ファイルへのパスを入力します。それがうまくいかないのはなぜですか?
ジョンサンダース

1
@vidalsasoon様 クラスエクスプローラーでこれらのクラスを使用する方法を簡単に説明してください。?
CalZone 2013年

16

WSDL.EXEユーティリティを使用して、WSDLからWebサービスプロキシを生成します。

次のようなクラスを含む長い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 {
    ...
}

クライアント側のWebサービスを消費するコードで、

  1. MyServiceをインスタンス化します。
  2. Urlプロパティを設定する
  3. Webメソッドを呼び出す

5
これにより、「古いスタイル」のASMX Webサービスが作成されます-それらは廃止されました-今日では代わりにWCFを使用する必要があります
marc_s

7

.Net Core プロジェクトに wsdl参照を追加する場合、「Web参照の追加」オプションはありません。

wsdl参照を追加するには、ソリューションエクスプローラーに移動し、Referencesプロジェクト項目を右クリックして、[ 接続されているサービス追加]オプションをクリックします

ここに画像の説明を入力してください

次に、「Microsoft WCF Webサービスリファレンス」をクリックします。

ここに画像の説明を入力してください

URIテキストボックスにファイルパスを入力し、WSDLをインポートします。

ここに画像の説明を入力してください

シンプルで非常に基本的なWCFクライアントを生成し、次のように使用します。

YourServiceClient client = new YourServiceClient();
client.DoSomething();
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.