HttpSimpleClientProtocol.BeginInvoke Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Starts an asynchronous invocation of a method of an XML Web service.
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
The name of the XML Web service method.
- requestUrl
- String
The URL to use when creating the WebRequest.
- parameters
- Object[]
An array of objects containing the parameters to pass to the XML Web service method. The order of the values in the array corresponds to the order of the parameters in the calling method of the derived class.
- callback
- AsyncCallback
The delegate to call when the asynchronous method call is complete. If callback
is null
, the delegate is not called.
- asyncState
- Object
The additional information supplied by a client.
Returns
An IAsyncResult that can be passed to the EndInvoke(IAsyncResult) method to obtain the return values from the XML Web service method.
Exceptions
The request reached the server computer, but was not processed successfully.
Examples
The following code example is an ASP.NET Web Form, which calls an XML Web service named Math
. Within the EnterBtn_Click
function, the Web Form starts and completes an asynchronous invocation of the Add
XML Web service method.
<%@ 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>
The following code example is a proxy class generated by the Web Services Description Language tool (Wsdl.exe) for the Math
XML Web service below. Within the BeginAdd
method of the proxy class, the BeginInvoke method starts an asynchronous invocation of the Add
XML Web service method.
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
The following code example is the Math
XML Web service, from which the preceding proxy class was created.
<%@ 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
Remarks
The methodName
parameter is used to find the types of the parameters and return values of the method that is invoking the BeginInvoke method. It is also used to find custom attributes that may have been added to the method. SoapDocumentMethodAttribute, SoapRpcMethodAttribute, and XmlElementAttribute provide additional information on the derived method that is required for the HTTP protocol.
asyncState
is passed into callback
and is included in the IAsyncResult that is returned from the BeginInvoke method. It is useful for passing information from the context of the asynchronous call to the handling of the asynchronous result in callback
.