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 からプロキシ クラスを派生する必要があります。また、 HttpWebClientProtocol は WebClientProtocol から順番に派生されます。
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