次の方法で共有


SoapHttpClientProtocol クラス

SOAP 使用時のクライアント プロキシの派生元となるクラスを指定します。

この型のすべてのメンバの一覧については、SoapHttpClientProtocol メンバ を参照してください。

System.Object
   System.MarshalByRefObject
      System.ComponentModel.Component
         System.Web.Services.Protocols.WebClientProtocol
            System.Web.Services.Protocols.HttpWebClientProtocol
               System.Web.Services.Protocols.SoapHttpClientProtocol

Public Class SoapHttpClientProtocol
   Inherits HttpWebClientProtocol
[C#]
public class SoapHttpClientProtocol : HttpWebClientProtocol
[C++]
public __gc class SoapHttpClientProtocol : public
   HttpWebClientProtocol
[JScript]
public class SoapHttpClientProtocol extends HttpWebClientProtocol

スレッドセーフ

この型は、マルチスレッド操作に対して安全です。

解説

XML Web サービス クライアントを構築する場合は、XML Web サービスで使用する WebClientProtocol から間接または直接に派生するプロキシ クラスを作成する必要があります。XML Web サービス クライアントが SOAP を使用して呼び出している場合は、 HttpWebClientProtocol から派生する SoapHttpClientProtocol からプロキシ クラスを派生する必要があります。また、 HttpWebClientProtocolWebClientProtocol から順番に派生されます。

XML Web サービスと通信する場合は、呼び出す XML Web サービスで使用する WebClientProtocol から間接または直接に派生するプロキシ クラスを作成する必要があります。プロキシ クラスを手動で作成する代わりに、Wsdl.exe ツールを使用して、指定された XML Web サービスのサービスの説明からプロキシ クラスを作成できます。SOAP プロトコルに対応するプロキシ クラスが生成されると、XML Web サービス メソッドへの同期呼び出しは Invoke を通じて行われますが、非同期呼び出しは BeginInvoke および EndInvoke を通じて行われます。

継承時の注意: このクラスをオーバーライドすると、特定のタイプの XML Web サービスに固有のメソッドを派生クラスに導入できます。これらのメソッドは単純にパラメータをキャプチャし、XML Web サービスと通信する作業を実行する基本クラスを呼び出します。導入されたメソッドが非同期の場合は、 BeginInvoke および EndInvoke を呼び出します。導入されたメソッドが同期の場合は、 Invoke を呼び出します。オーバーライドされたコンストラクタは、通常、 Url プロパティに XML Web サービス メソッドの URL を設定します。

使用例

[Visual Basic, C#, C++] Wsdl.exe ユーティリティによって、下の Math XML Web サービス用に生成されるプロキシ クラスの例を次に示します。プロキシ クラスは、 SoapHttpClientProtocol から派生します。このクラスは、 WebClientProtocol 抽象クラスから派生します。

 
Option Strict On
Option Explicit On

Imports System
Imports System.Diagnostics
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Xml.Serialization

Namespace MyMath
    
    <System.Web.Services.WebServiceBindingAttribute(Name:="MyMathSoap", [Namespace]:="https://www.contoso.com/")>  _
    Public Class MyMath
        Inherits System.Web.Services.Protocols.SoapHttpClientProtocol
        
        <System.Diagnostics.DebuggerStepThroughAttribute()>  _
        Public Sub New()
            MyBase.New
            Me.Url = "https://www.contoso.com/math.asmx"
        End Sub
        
        <System.Diagnostics.DebuggerStepThroughAttribute(),  _
         System.Web.Services.Protocols.SoapDocumentMethodAttribute("https://www.contoso.com/Add", RequestNamespace:="https://www.contoso.com/", ResponseNamespace:="https://www.contoso.com/", Use:=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle:=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)>  _
        Public Function Add(ByVal num1 As Integer, ByVal num2 As Integer) As Integer
            Dim results() As Object = Me.Invoke("Add", New Object() {num1, num2})
            Return CType(results(0),Integer)
        End Function
        
        <System.Diagnostics.DebuggerStepThroughAttribute()>  _
        Public Function BeginAdd(ByVal num1 As Integer, ByVal num2 As Integer, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult
            Return Me.BeginInvoke("Add", New Object() {num1, num2}, callback, asyncState)
        End Function
        
        <System.Diagnostics.DebuggerStepThroughAttribute()>  _
        Public Function EndAdd(ByVal asyncResult As System.IAsyncResult) As Integer
            Dim results() As Object = Me.EndInvoke(asyncResult)
            Return CType(results(0),Integer)
        End Function
    End Class
End Namespace


[C#] 

namespace MyMath {
    using System.Diagnostics;
    using System.Xml.Serialization;
    using System;
    using System.Web.Services.Protocols;
    using System.Web.Services;
    
    
    [System.Web.Services.WebServiceBindingAttribute(Name="MyMathSoap", Namespace="https://www.contoso.com/")]
    public class MyMath : System.Web.Services.Protocols.SoapHttpClientProtocol {
        
        [System.Diagnostics.DebuggerStepThroughAttribute()]
        public MyMath() {
            this.Url = "https://www.contoso.com/math.asmx";
        }
        
        [System.Diagnostics.DebuggerStepThroughAttribute()]
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("https://www.contoso.com/Add", RequestNamespace="https://www.contoso.com/", ResponseNamespace="https://www.contoso.com/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public int Add(int num1, int num2) {
            object[] results = this.Invoke("Add", new object[] {num1,
                        num2});
            return ((int)(results[0]));
        }
        
        [System.Diagnostics.DebuggerStepThroughAttribute()]
        public System.IAsyncResult BeginAdd(int num1, int num2, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("Add", new object[] {num1,
                        num2}, callback, asyncState);
        }
        
        [System.Diagnostics.DebuggerStepThroughAttribute()]
        public int EndAdd(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((int)(results[0]));
        }
    }
}


[C++] 
#using <mscorlib.dll>
#using <System.Web.Services.dll>
#using <System.Xml.dll>
#using <System.dll>
using namespace System::Diagnostics;
using namespace System::Xml::Serialization;
using namespace System;
using namespace System::Web::Services::Protocols;
using namespace System::Web::Services;
namespace MyMath {


   [System::Web::Services::WebServiceBindingAttribute(Name=S"MyMathSoap", Namespace=S"https://www.contoso.com/")]
   public __gc class MyMath : public System::Web::Services::Protocols::SoapHttpClientProtocol {

   public:
      [System::Diagnostics::DebuggerStepThroughAttribute]
      MyMath() {
         this->Url = S"https://www.contoso.com/math.asmx";
      }

      [System::Diagnostics::DebuggerStepThroughAttribute]
      [System::Web::Services::Protocols::SoapDocumentMethodAttribute(S"https://www.contoso.com/Add",
         RequestNamespace=S"https://www.contoso.com/", ResponseNamespace=S"https://www.contoso.com/",
         Use=System::Web::Services::Description::SoapBindingUse::Literal,
         ParameterStyle=System::Web::Services::Protocols::SoapParameterStyle::Wrapped)]
      int Add(int num1, int num2) {
         Object* temp0 [] = {__box(num1), __box(num2)};
         Object* results[] = this->Invoke(S"Add", temp0);
         return *dynamic_cast<__box int*>(results[0]);
      }

      [System::Diagnostics::DebuggerStepThroughAttribute]
      System::IAsyncResult* BeginAdd(int num1, int num2, System::AsyncCallback* callback, Object* asyncState) {
         Object* temp1 [] = {__box(num1), __box(num2)};
         return this->BeginInvoke(S"Add", temp1, callback, asyncState);
      }

      [System::Diagnostics::DebuggerStepThroughAttribute]
      int EndAdd(System::IAsyncResult* asyncResult) {
         Object* results[] = this->EndInvoke(asyncResult);
         return *dynamic_cast<__box int*>(results[0]);
      }
   };
}

上のプロキシ クラスの生成元の Math XML Web サービスの例を次に示します。

 
<%@ WebService Language="VB" Class="MyMath"%>
Imports System.Web.Services
Imports System

<WebService(Namespace:="https://www.contoso.com/")> _
Public Class MyMath
    <WebMethod()> _
    Public Function Add(num1 As Integer, num2 As Integer) As Integer
        Return num1 + num2
    End Function 'Add
End Class 'Math

[C#] 
<%@ WebService Language="C#" Class="MyMath"%>
 using System.Web.Services;
 using System;
 
 [WebService(Namespace="https://www.contoso.com/")] 
 public class MyMath {
      [ WebMethod ]
      public int Add(int num1, int num2) {
          return num1+num2;
          }
 }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Web.Services.Protocols

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: System.Web.Services (System.Web.Services.dll 内)

参照

SoapHttpClientProtocol メンバ | System.Web.Services.Protocols 名前空間 | HttpSimpleClientProtocol