SoapHttpClientProtocol Class
Specifies the class client that proxies derive from when using SOAP.
Assembly: System.Web.Services (in System.Web.Services.dll)
If you are building an XML Web service client, then a proxy class that derives indirectly or directly from WebClientProtocol must be created for the XML Web service. When the XML Web service client calls using SOAP, the proxy class must derive from SoapHttpClientProtocol, which derives from HttpWebClientProtocol. HttpWebClientProtocol, in turn, derives from WebClientProtocol.
To communicate with an XML Web service, create a proxy class that derives indirectly or directly from WebClientProtocol for the XML Web service you want to call. Instead of creating the proxy class manually, use the Web Services Description Language tool (Wsdl.exe) to create a proxy class for a given XML Web service's service description. When a proxy class is generated for the SOAP protocol, synchronous calls to XML Web service methods are made via the Invoke method, whereas asynchronous calls are made using the BeginInvoke method and the EndInvoke method.
Notes to Inheritors:When you override this class, you can introduce methods in the derived class which are specific to a particular type of XML Web service. The methods capture the parameters and call the base class to do the work of communicating with the XML Web service. If the introduced methods are asynchronous, call the BeginInvoke method and the EndInvoke method. If the introduced methods are synchronous, call the Invoke method. The overridden constructor typically sets the Url property to the URL of the XML Web service method.
The following code example is a proxy class generated by Wsdl.exe for the Math XML Web service. The proxy class derives from SoapHttpClientProtocol, which derives from the abstract WebClientProtocol class.
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
#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"http://www.contoso.com/")]
public __gc class MyMath : public System::Web::Services::Protocols::SoapHttpClientProtocol {
public:
[System::Diagnostics::DebuggerStepThroughAttribute]
MyMath() {
this->Url = S"http://www.contoso.com/math.asmx";
}
[System::Diagnostics::DebuggerStepThroughAttribute]
[System::Web::Services::Protocols::SoapDocumentMethodAttribute(S"http://www.contoso.com/Add",
RequestNamespace=S"http://www.contoso.com/", ResponseNamespace=S"http://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]);
}
};
}
The following code example is the Math XML Web service, from which the preceding proxy class was generated.
Security Note: |
|---|
This example has a text box that accepts user input, which is a potential security threat. By default, ASP.NET Web pages validate that user input does not include script or HTML elements. For more information, see Script Exploits Overview. |
<%@ 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 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Security Note: