Partager via


SoapHttpClientProtocol.BeginInvoke Méthode

Définition

Débute un appel asynchrone d'une méthode de service Web XML au moyen de SOAP.

protected:
 IAsyncResult ^ BeginInvoke(System::String ^ methodName, cli::array <System::Object ^> ^ parameters, AsyncCallback ^ callback, System::Object ^ asyncState);
protected IAsyncResult BeginInvoke (string methodName, object[] parameters, AsyncCallback callback, object asyncState);
member this.BeginInvoke : string * obj[] * AsyncCallback * obj -> IAsyncResult
Protected Function BeginInvoke (methodName As String, parameters As Object(), callback As AsyncCallback, asyncState As Object) As IAsyncResult

Paramètres

methodName
String

Nom de la méthode de service Web XML dans la classe dérivée qui appelle la méthode BeginInvoke(String, Object[], AsyncCallback, Object).

parameters
Object[]

Tableau d'objets contenant les paramètres à passer au service Web XML. L'ordre des valeurs du tableau correspond à l'ordre des paramètres dans la méthode appelante de la classe dérivée.

callback
AsyncCallback

Délégué à appeler une fois l'appel asynchrone terminé. Si callback a la valeur null, le délégué n'est pas appelé.

asyncState
Object

Informations supplémentaires fournies par l'appelant.

Retours

IAsyncResult passé à la méthode EndInvoke(IAsyncResult) pour obtenir les valeurs de retour de l'appel de méthode distante.

Exceptions

La demande a atteint le serveur, mais n'a pas été traitée correctement.

La requête n'était pas valide pour l'état actuel de l'objet.

Une erreur s'est produite lors de l'accès au réseau.

Exemples

L’exemple de code suivant est une classe proxy générée par l’outil Web Services Description Language (Wsdl.exe) pour le Math service Web XML. Dans la BeginAdd méthode de la classe proxy, la BeginInvoke méthode démarre un appel asynchrone à la méthode de Add service Web XML.

#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^>^temp1 = {num1,num2};
         array<Object^>^results = this->Invoke( "Add", temp1 );
         return  *dynamic_cast<int^>(results[ 0 ]);
      }


      [System::Diagnostics::DebuggerStepThroughAttribute]
      System::IAsyncResult^ BeginAdd( int num1, int num2, System::AsyncCallback^ callback, Object^ asyncState )
      {
         array<Object^>^temp2 = {num1,num2};
         return this->BeginInvoke( "Add", temp2, callback, asyncState );
      }


      [System::Diagnostics::DebuggerStepThroughAttribute]
      int EndAdd( System::IAsyncResult^ asyncResult )
      {
         array<Object^>^results = this->EndInvoke( asyncResult );
         return  *dynamic_cast<int^>(results[ 0 ]);
      }

   };

}


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

Option Strict On
Option Explicit On

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

L’exemple de code suivant est le Math service Web XML, à partir duquel la classe proxy précédente a été créée.

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

Remarques

En règle générale, vous n’appelez pas la BeginInvoke méthode directement, sauf si vous générez votre propre classe proxy pour un service Web XML.

Une classe proxy générée par l’outil Web Services Description Language (Wsdl.exe) à partir d’une description de service expose les méthodes de service Web XML en tant que noms dérivés de la classe proxy pour appeler les méthodes du service Web XML de manière synchrone. Pour appeler les méthodes de service Web XML de manière asynchrone, deux méthodes supplémentaires sont ajoutées à la classe proxy pour chaque méthode de service Web XML, l’une avec le Begin préfixe ajouté au nom de la méthode de service Web XML et l’autre avec le End préfixe ajouté.

La classe proxy appelle la BeginInvoke méthode pour démarrer un appel asynchrone à la méthode de service Web XML. Par exemple, si un service Web XML expose une méthode de service Web XML nommée Add, la classe proxy contient une méthode nommée BeginAdd, pour démarrer un appel à la méthode de service Web XML. Dans le code de , BeginAddun appel est effectué à la BeginInvoke méthode et les résultats sont placés dans le type de retour attendu pour Add.

le methodName est utilisé pour rechercher les attributs personnalisés qui ont pu être ajoutés à la méthode, tels que SoapDocumentMethodAttribute. SoapDocumentMethodAttribute fournit des informations supplémentaires sur la méthode dérivée requise pour le protocole SOAP.

asyncState est passé dans callback et est inclus dans qui IAsyncResult est retourné à partir de la BeginInvoke méthode . Le asyncState paramètre peut être utilisé pour transmettre des informations sur le contexte de l’appel asynchrone, spécifié dans le callback paramètre , au délégué qui gère le résultat.

S’applique à

Voir aussi