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.
#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 ]); } }; }
#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. |
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: