SoapHttpClientProtocol クラス
アセンブリ: System.Web.Services (system.web.services.dll 内)


XML Web サービス クライアントを構築する場合は、WebClientProtocol から間接または直接に派生したプロキシ クラスを、その XML Web サービス用に作成する必要があります。XML Web サービス クライアントが SOAP を使用して呼び出しを行う場合、プロキシ クラスは、HttpWebClientProtocol から派生した SoapHttpClientProtocol から派生する必要があります。HttpWebClientProtocol はさらに、WebClientProtocol から派生しています。
XML Web サービスと通信するには、呼び出す XML Web サービス用に、WebClientProtocol から間接または直接に派生したプロキシ クラスを作成します。プロキシ クラスを手動で作成する代わりに、Web サービス記述言語ツール (Wsdl.exe) を使用して、指定された XML Web サービスのサービス記述からプロキシ クラスを作成します。SOAP プロトコルに対応するプロキシ クラスが生成されると、XML Web サービス メソッドへの同期呼び出しは Invoke メソッドを通じて行われますが、非同期呼び出しは BeginInvoke メソッドおよび EndInvoke メソッドを通じて行われます。
継承時の注意 このクラスをオーバーライドすると、特定のタイプの XML Web サービスに固有のメソッドを派生クラスに導入できます。これらのメソッドはパラメータをキャプチャし、XML Web サービスと通信する作業を実行する基本クラスを呼び出します。導入されたメソッドが非同期の場合は、BeginInvoke メソッドおよび EndInvoke メソッドを呼び出します。導入されたメソッドが同期の場合は、Invoke メソッドを呼び出します。オーバーライドされたコンストラクタは、通常、Url プロパティに XML Web サービス メソッドの URL を設定します。
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]:="http://www.contoso.com/")> _ Public Class MyMath Inherits System.Web.Services.Protocols.SoapHttpClientProtocol <System.Diagnostics.DebuggerStepThroughAttribute()> _ Public Sub New() MyBase.New Me.Url = "http://www.contoso.com/math.asmx" End Sub <System.Diagnostics.DebuggerStepThroughAttribute(), _ System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.contoso.com/Add", RequestNamespace:="http://www.contoso.com/", ResponseNamespace:="http://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
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="http://www.contoso.com/")] public class MyMath : System.Web.Services.Protocols.SoapHttpClientProtocol { [System.Diagnostics.DebuggerStepThroughAttribute()] public MyMath() { this.Url = "http://www.contoso.com/math.asmx"; } [System.Diagnostics.DebuggerStepThroughAttribute()] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.contoso.com/Add", RequestNamespace="http://www.contoso.com/", ResponseNamespace="http://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])); } } }
#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="MyMathSoap" ,Namespace="http://www.contoso.com/")] public ref class MyMath: public System::Web::Services::Protocols::SoapHttpClientProtocol { public: [System::Diagnostics::DebuggerStepThroughAttribute] MyMath() { this->Url = "http://www.contoso.com/math.asmx"; } [System::Diagnostics::DebuggerStepThroughAttribute] [System::Web::Services::Protocols::SoapDocumentMethodAttribute("http://www.contoso.com/Add" , RequestNamespace="http://www.contoso.com/",ResponseNamespace="http://www.contoso.com/" , Use=System::Web::Services::Description::SoapBindingUse::Literal, ParameterStyle=System::Web::Services::Protocols::SoapParameterStyle::Wrapped)] int Add( int num1, int num2 ) { array<Object^>^temp0 = {num1,num2}; array<Object^>^results = this->Invoke( "Add", temp0 ); return *dynamic_cast<int^>(results[ 0 ]); } [System::Diagnostics::DebuggerStepThroughAttribute] System::IAsyncResult^ BeginAdd( int num1, int num2, System::AsyncCallback^ callback, Object^ asyncState ) { array<Object^>^temp1 = {num1,num2}; return this->BeginInvoke( "Add", temp1, callback, asyncState ); } [System::Diagnostics::DebuggerStepThroughAttribute] int EndAdd( System::IAsyncResult^ asyncResult ) { array<Object^>^results = this->EndInvoke( asyncResult ); return *dynamic_cast<int^>(results[ 0 ]); } }; }
package MyMath; import System.Diagnostics.*; import System.Xml.Serialization.*; import System.*; import System.Web.Services.Protocols.*; import System.Web.Services.*; /** @attribute System.Web.Services.WebServiceBindingAttribute( Name = "MyMathSoap", Namespace = "http://www.contoso.com/") */ public class MyMath extends System.Web.Services.Protocols.SoapHttpClientProtocol { /** @attribute System.Diagnostics.DebuggerStepThroughAttribute() */ public MyMath() { this.set_Url("http://www.contoso.com/math.asmx"); } //MyMath /** @attribute System.Diagnostics.DebuggerStepThroughAttribute() */ /** @attribute System.Web.Services.Protocols.SoapDocumentMethodAttribute( "http://www.contoso.com/Add", RequestNamespace = "http://www.contoso.com/", ResponseNamespace = "http://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[] { (Int32)num1, (Int32)num2 }); return (int)((Int32)results.get_Item(0)); } //Add /** @attribute System.Diagnostics.DebuggerStepThroughAttribute() */ public System.IAsyncResult BeginAdd(int num1, int num2, System.AsyncCallback callback, Object asyncState) { return this.BeginInvoke("Add", new Object[] { (Int32)num1, (Int32)num2 }, callback, asyncState); } //BeginAdd /** @attribute System.Diagnostics.DebuggerStepThroughAttribute() */ public int EndAdd(System.IAsyncResult asyncResult) { Object results[] = this.EndInvoke(asyncResult); return (int)((Int32)results.get_Item(0)); } //EndAdd } //MyMath
前述のプロキシ クラスの生成元になった Math XML Web サービスのコード例を次に示します。
<%@ WebService Language="VB" Class="MyMath"%> Imports System.Web.Services Imports System <WebService(Namespace:="http://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

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


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- SoapHttpClientProtocol クラスのページへのリンク