Export (0) Print
Expand All

SoapHttpClientProtocol.EndInvoke Method

Ends an asynchronous invocation of an XML Web service method using SOAP.

Namespace:  System.Web.Services.Protocols
Assembly:  System.Web.Services (in System.Web.Services.dll)

'Declaration
Protected Function EndInvoke ( _
	asyncResult As IAsyncResult _
) As Object()
'Usage
Dim asyncResult As IAsyncResult 
Dim returnValue As Object()

returnValue = Me.EndInvoke(asyncResult)

Parameters

asyncResult
Type: System.IAsyncResult

The IAsyncResult returned from the BeginInvoke method.

Return Value

Type: System.Object()
An array of objects that contains the return value and any by-reference or out parameters of the derived class method.

ExceptionCondition
ArgumentException

asyncResult is not the return value from the BeginInvoke method.

SoapException

The request reached the server computer, but was not processed successfully.

Typically, you would not call the EndInvoke method directly, unless you were building your own proxy class for an XML Web service.

A proxy class generated by the Web Services Description Language tool (Wsdl.exe) for an XML Web service exposes the XML Web service methods as names off of the proxy class for calling the XML Web service methods synchronously. For calling the XML Web service methods asynchronously, two additional methods are added to the proxy class for each XML Web service method, one with the Begin prefix added to the name of the XML Web service method and one with the End prefix added.

The proxy class calls the EndInvoke method to complete an asynchronous invocation call to the XML Web service method. For example, if an XML Web service exposes an XML Web service method named Add, the proxy class contains a method named EndAdd, for completing an asynchronous invocation of an XML Web service method. Within the code for the EndAdd a call is made to the EndInvoke method and then the results are placed into the expected return type for Add.

The following code example is a proxy class generated by Wsdl.exe for the Math XML Web service. Within the EndAdd method of the proxy class, the EndInvoke method completes the asynchronous invocation to the Add XML Web service method.

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 created.

<%@ 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

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
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

Show:
© 2014 Microsoft