HttpSimpleClientProtocol クラス
単純な HTTP-GET プロトコル バインディングおよび HTTP-POST プロトコル バインディングを使用して、XML Web サービスとの通信を行うための基本クラス。
この型のすべてのメンバの一覧については、HttpSimpleClientProtocol メンバ を参照してください。
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Web.Services.Protocols.WebClientProtocol
System.Web.Services.Protocols.HttpWebClientProtocol
System.Web.Services.Protocols.HttpSimpleClientProtocol
System.Web.Services.Protocols.HttpGetClientProtocol
System.Web.Services.Protocols.HttpPostClientProtocol
MustInherit Public Class HttpSimpleClientProtocol
Inherits HttpWebClientProtocol
[C#]
public abstract class HttpSimpleClientProtocol :
HttpWebClientProtocol
[C++]
public __gc __abstract class HttpSimpleClientProtocol : public
HttpWebClientProtocol
[JScript]
public abstract class HttpSimpleClientProtocol extends
HttpWebClientProtocol
スレッドセーフ
この型は、マルチスレッド操作に対して安全です。
解説
HTTP 経由で XML Web サービスとの通信を行う大部分の実装が、エンコーダを使用してパラメータと戻り値を共通の MIME 形式にエンコードすることを指定します。これらのエンコーダは、 MimeFormatter クラスから派生します。既定では、 HttpSimpleClientProtocol から派生したプロキシ クラスは、application/x-www-form-urlencoded MIME タイプおよび書式なし XML の応答を私用して、パラメータをエンコードします。カスタムの MIME フォーマッタは、 HttpMethodAttribute 属性を使用して指定できますが、これをサービスの説明やプロキシの生成に統合するためのサポートは行われません。
Notes to Inheritors: このクラスをオーバーライドすると、特定のタイプの XML Web サービスに固有のメソッドを派生クラスに導入できます。これらのメソッドは、単にパラメータをキャプチャし、サイトと通信する作業を実行する基本クラスを呼び出します。導入されたメソッドが非同期の場合は、 BeginInvoke および EndInvoke を呼び出します。導入されたメソッドが同期の場合は、 Invoke を呼び出します。オーバーライドされたコンストラクタは一般的に Url プロパティに、XML Web サービス メソッドの URI を設定します。
Wsdl.exe ユーティリティは、指定された サービスの説明 に対する HttpSimpleClientProtocol の派生クラスを生成します。
使用例
Wsdl.exe ユーティリティによって、下の Math
XML Web サービス用に生成されるプロキシ クラスの例を次に示します。プロキシ クラスは、 HttpGetClientProtocol から派生します。このクラスは、 HttpSimpleClientProtocol 抽象クラスから派生します。
Option Strict On
Option Explicit On
Imports System
Imports System.Diagnostics
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Xml.Serialization
Public Class MyMath
Inherits System.Web.Services.Protocols.HttpGetClientProtocol
<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.HttpMethodAttribute(GetType(System.Web.Services.Protocols.XmlReturnReader), GetType(System.Web.Services.Protocols.UrlParameterWriter))> _
Public Function Add(ByVal num1 As String, ByVal num2 As String) As <System.Xml.Serialization.XmlRootAttribute("int", [Namespace]:="https://www.contoso.com/", IsNullable:=false)> Integer
Return CType(Me.Invoke("Add", (Me.Url + "/Add"), New Object() {num1, num2}),Integer)
End Function
<System.Diagnostics.DebuggerStepThroughAttribute()> _
Public Function BeginAdd(ByVal num1 As String, ByVal num2 As String, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult
Return Me.BeginInvoke("Add", (Me.Url + "/Add"), New Object() {num1, num2}, callback, asyncState)
End Function
<System.Diagnostics.DebuggerStepThroughAttribute()> _
Public Function EndAdd(ByVal asyncResult As System.IAsyncResult) As Integer
Return CType(Me.EndInvoke(asyncResult),Integer)
End Function
End Class
[C#]
using System.Diagnostics;
using System.Xml.Serialization;
using System;
using System.Web.Services.Protocols;
using System.Web.Services;
public class MyMath : System.Web.Services.Protocols.HttpGetClientProtocol {
[System.Diagnostics.DebuggerStepThroughAttribute()]
public MyMath() {
this.Url = "https://www.contoso.com/math.asmx";
}
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.Web.Services.Protocols.HttpMethodAttribute(typeof(System.Web.Services.Protocols.XmlReturnReader), typeof(System.Web.Services.Protocols.UrlParameterWriter))]
[return: System.Xml.Serialization.XmlRootAttribute("int", Namespace="https://www.contoso.com/", IsNullable=false)]
public int Add(string num1, string num2) {
return ((int)(this.Invoke("Add", (this.Url + "/Add"), new object[] {num1,
num2})));
}
[System.Diagnostics.DebuggerStepThroughAttribute()]
public System.IAsyncResult BeginAdd(string num1, string num2, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("Add", (this.Url + "/Add"), new object[] {num1,
num2}, callback, asyncState);
}
[System.Diagnostics.DebuggerStepThroughAttribute()]
public int EndAdd(System.IAsyncResult asyncResult) {
return ((int)(this.EndInvoke(asyncResult)));
}
}
[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;
public __gc class MyMath : public System::Web::Services::Protocols::HttpGetClientProtocol {
public:
[System::Diagnostics::DebuggerStepThroughAttribute]
MyMath() {
this->Url = S"https://www.contoso.com/math.asmx";
}
[System::Diagnostics::DebuggerStepThroughAttribute]
[System::Web::Services::Protocols::HttpMethodAttribute(__typeof(System::Web::Services::Protocols::XmlReturnReader),
__typeof(System::Web::Services::Protocols::UrlParameterWriter))]
[returnvalue: System::Xml::Serialization::XmlRootAttribute(S"int", Namespace=S"https://www.contoso.com/", IsNullable=false)]
int Add(String* num1, String* num2) {
Object* temp0 [] = {num1, num2};
return *dynamic_cast<__box int*>(this->Invoke(S"Add", (String::Concat( this->Url, S"/Add" )), temp0));
}
[System::Diagnostics::DebuggerStepThroughAttribute]
System::IAsyncResult* BeginAdd(String* num1, String* num2, System::AsyncCallback* callback, Object* asyncState) {
Object* temp1 [] = {num1, num2};
return this->BeginInvoke(S"Add", (String::Concat( this->Url, S"/Add" )), temp1, callback, asyncState);
}
[System::Diagnostics::DebuggerStepThroughAttribute]
int EndAdd(System::IAsyncResult* asyncResult) {
return *dynamic_cast<__box int*>(this->EndInvoke(asyncResult));
}
};
上のプロキシ クラスの作成元の Math
XML Web サービスの例を次に示します。
Imports System.Web.Services
Imports System
Public Class Math
<WebMethod()> _
Public Function Add(num1 As Integer, num2 As Integer)As Integer
Return num1 + num2
End Function
End Class
[C#]
using System.Web.Services;
using System;
public class Math {
[ WebMethod ]
public int Add(int num1, int num2) {
return num1+num2;
}
}
[C++]
#using <mscorlib.dll>
#using <System.EnterpriseServices.dll>
#using <System.Web.Services.dll>
using namespace System::Web::Services;
using namespace System;
public __gc class Math {
public:
[ WebMethod ]
int Add(int num1, int num2) {
return num1+num2;
}
};
[JScript]
import System.Web.Services
import System
class Math{
public WebMethod()
function Add(num1 : int, num2 : int): int{
return num1 + num2
}
}
必要条件
名前空間: 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 ファミリ
アセンブリ: System.Web.Services (System.Web.Services.dll 内)
参照
HttpSimpleClientProtocol メンバ | System.Web.Services.Protocols 名前空間 | SoapHttpClientProtocol