Export (0) Print
Expand All
2 out of 7 rated this helpful - Rate this topic

SoapHttpClientProtocol Class

Specifies the class client that proxies derive from when using SOAP.

Namespace:  System.Web.Services.Protocols
Assembly:  System.Web.Services (in System.Web.Services.dll)
[ComVisibleAttribute(true)]
public class SoapHttpClientProtocol : HttpWebClientProtocol

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.

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 <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 noteSecurity 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="C#" Class="MyMath"%>
 using System.Web.Services;
 using System;

 [WebService(Namespace="http://www.contoso.com/")] 
 public class MyMath {
      [ WebMethod ]
      public int Add(int num1, int num2) {
          return num1+num2;
          }
 }

This type is thread safe.

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.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0, 1.0

Community Additions

ADD
Show:
© 2014 Microsoft. All rights reserved.