HttpSimpleClientProtocol.BeginInvoke Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee start u een asynchrone aanroep van een methode van een XML-webservice.
protected:
IAsyncResult ^ BeginInvoke(System::String ^ methodName, System::String ^ requestUrl, cli::array <System::Object ^> ^ parameters, AsyncCallback ^ callback, System::Object ^ asyncState);
protected IAsyncResult BeginInvoke(string methodName, string requestUrl, object[] parameters, AsyncCallback callback, object asyncState);
member this.BeginInvoke : string * string * obj[] * AsyncCallback * obj -> IAsyncResult
Protected Function BeginInvoke (methodName As String, requestUrl As String, parameters As Object(), callback As AsyncCallback, asyncState As Object) As IAsyncResult
Parameters
- methodName
- String
De naam van de XML-webservicemethode.
- requestUrl
- String
De URL die moet worden gebruikt bij het maken van de WebRequest.
- parameters
- Object[]
Een matrix met objecten die de parameters bevatten die moeten worden doorgegeven aan de XML-webservicemethode. De volgorde van de waarden in de matrix komt overeen met de volgorde van de parameters in de aanroepmethode van de afgeleide klasse.
- callback
- AsyncCallback
De gemachtigde die moet worden aangeroepen wanneer de aanroep van de asynchrone methode is voltooid. Als callback dat het is null, wordt de gemachtigde niet aangeroepen.
- asyncState
- Object
De aanvullende informatie die door een klant wordt verstrekt.
Retouren
Een IAsyncResult die kan worden doorgegeven aan de EndInvoke(IAsyncResult) methode om de retourwaarden op te halen uit de XML-webservicemethode.
Uitzonderingen
De aanvraag heeft de servercomputer bereikt, maar is niet verwerkt.
Voorbeelden
Het volgende codevoorbeeld is een ASP.NET webformulier, dat een XML-webservice aanroept met de naam Math. Binnen de EnterBtn_Click functie wordt het webformulier gestart en wordt een asynchrone aanroep van de Add XML-webservicemethode voltooid.
<%@ Page Language="VB" %>
<html>
<script language="VB" runat="server">
Sub EnterBtn_Click(Src As Object, E As EventArgs)
Dim math As New MyMath.Math()
' Call to Add XML Web service method asynchronously.
Dim result As IAsyncResult = math.BeginAdd(Convert.ToInt32(Num1.Text), Convert.ToInt32(Num2.Text), Nothing, Nothing)
' Wait for the asynchronous call to complete.
result.AsyncWaitHandle.WaitOne()
' Complete the asynchronous call to the Add XML Web service method.
Dim iTotal As Integer = math.EndAdd(result)
Total.Text = "Total: " & iTotal.ToString()
End Sub 'EnterBtn_Click
</script>
<body>
<form action="MathClient.aspx" runat=server>
Enter the two numbers you want to add and then press the Total button.
<p>
Number 1: <asp:textbox id="Num1" runat=server/> +
Number 2: <asp:textbox id="Num2" runat=server/> =
<asp:button text="Total" Onclick="EnterBtn_Click" runat=server/>
<p>
<asp:label id="Total" runat=server/>
</form>
</body>
</html>
Het volgende codevoorbeeld is een proxyklasse die wordt gegenereerd door het hulpprogramma Beschrijvingstaal voor webservices (Wsdl.exe) voor de Math onderstaande XML-webservice. Binnen de BeginAdd methode van de proxyklasse start de BeginInvoke methode een asynchrone aanroep van de Add XML-webservicemethode.
namespace MyMath
{
[XmlRootAttribute("snippet1>",Namespace="http://MyMath/",IsNullable=false)]
public ref class Math: public HttpGetClientProtocol
{
public:
Math()
{
this->Url = "http://www.contoso.com/math.asmx";
}
[HttpMethodAttribute(System::Web::Services::Protocols::XmlReturnReader::typeid,
System::Web::Services::Protocols::UrlParameterWriter::typeid)]
int Add( String^ num1, String^ num2 )
{
array<Object^>^temp0 = {num1,num2};
return *dynamic_cast<int^>(this->Invoke( "Add", String::Concat( this->Url, "/Add" ), temp0 ));
}
IAsyncResult^ BeginAdd( String^ num1, String^ num2, AsyncCallback^ callback, Object^ asyncState )
{
array<Object^>^temp1 = {num1,num2};
return this->BeginInvoke( "Add", String::Concat( this->Url, "/Add" ), temp1, callback, asyncState );
}
int EndAdd( IAsyncResult^ asyncResult )
{
return *dynamic_cast<int^>(this->EndInvoke( asyncResult ));
}
};
}
namespace MyMath
{
[XmlRootAttribute("int", Namespace = "http://MyMath/", IsNullable = false)]
public class Math : HttpGetClientProtocol
{
public Math()
{
this.Url = "http://www.contoso.com/math.asmx";
}
[HttpMethodAttribute(typeof(System.Web.Services.Protocols.XmlReturnReader),
typeof(System.Web.Services.Protocols.UrlParameterWriter))]
public int Add(int num1, int num2)
{
return ((int)(this.Invoke("Add", ((this.Url) + ("/Add")),
new object[] { num1, num2 })));
}
public IAsyncResult BeginAdd(int num1, int num2, AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("Add", ((this.Url) + ("/Add")),
new object[] { num1, num2 }, callback, asyncState);
}
public int EndAdd(IAsyncResult asyncResult)
{
return ((int)(this.EndInvoke(asyncResult)));
}
}
}
Namespace MyMath
<XmlRootAttribute("int", Namespace := "http://MyMath/", IsNullable := False)> _
Public Class Math
Inherits HttpGetClientProtocol
Public Sub New()
Me.Url = "http://www.contoso.com/math.asmx"
End Sub
<HttpMethodAttribute(GetType(XmlReturnReader), GetType(UrlParameterWriter))> _
Public Function Add(num1 As String, num2 As String) As Integer
Return CInt(Me.Invoke("Add", Me.Url + "/Add", New Object() {num1, num2}))
End Function 'Add
Public Function BeginAdd(num1 As String, num2 As String, callback As AsyncCallback, asyncState As Object) As IAsyncResult
Return Me.BeginInvoke("Add", Me.Url + "/Add", New Object() {num1, num2}, callback, asyncState)
End Function 'BeginAdd
Public Function EndAdd(asyncResult As IAsyncResult) As Integer
Return CInt(Me.EndInvoke(asyncResult))
End Function 'EndAdd
End Class
End Namespace 'MyMath
Het volgende codevoorbeeld is de Math XML-webservice, waaruit de voorgaande proxyklasse is gemaakt.
<%@ WebService Language="C#" Class="Math"%>
using System.Web.Services;
using System;
public class Math {
[ WebMethod ]
public int Add(int num1, int num2) {
return num1+num2;
}
}
<%@ WebService Language="VB" Class="Math"%>
Imports System.Web.Services
Imports System
Public Class Math
<WebMethod()> _
Public Function Add(num1 As Integer, num2 As Integer) As Integer
Return num1 + num2
End Function 'Add
End Class 'Math
Opmerkingen
De methodName parameter wordt gebruikt om de typen van de parameters te vinden en waarden te retourneren van de methode die de BeginInvoke methode aanroept. Het wordt ook gebruikt om aangepaste kenmerken te vinden die mogelijk zijn toegevoegd aan de methode.
SoapDocumentMethodAttribute, SoapRpcMethodAttributeen XmlElementAttribute geef aanvullende informatie op over de afgeleide methode die vereist is voor het HTTP-protocol.
asyncState wordt doorgegeven callback aan en wordt opgenomen in de IAsyncResult methode die wordt geretourneerd BeginInvoke . Het is handig voor het doorgeven van informatie uit de context van de asynchrone aanroep naar de verwerking van het asynchrone resultaat in callback.