Cómo: Realizar una llamada asincrónica desde un cliente de servicios web
Este tema es específico de una tecnología heredada. Ahora, los servicios Web XML y los clientes de servicios Web XML deben crearse con Windows Communication Foundation.
En el siguiente ejemplo de código se muestra cómo realizar una llamada asincrónica a un servicio Web desde una aplicación cliente. Este ejemplo muestra una de las instrucciones explicadas en el tema, Instrucciones de diseño para los servicios Web XML creados con ASP.NET.
Nota: de seguridad |
---|
Este ejemplo tiene un cuadro de texto que acepta datos proporcionados por el usuario, lo que puede suponer una amenaza para la seguridad. De forma predeterminada, las páginas web ASP.NET validan que los datos proporcionados por el usuario no incluyen elementos HTML ni de script. Para obtener más información, vea Script Exploits Overview. |
Ejemplo
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Net" %>
<html>
<script language="C#" runat="server">
void EnterBtn_Click(Object Src, EventArgs E)
{
MyMath.Math math = new MyMath.Math();
// Call to Add Web service method asynchronously
// and then wait for it to complete.
IAsyncResult result =
math.BeginAdd(Convert.ToInt32(Num1.Text),
Convert.ToInt32(Num2.Text),
null,
null);
// Wait for asynchronous call to complete.
result.AsyncWaitHandle.WaitOne();
// Complete the asynchronous call to Add Web service method.
float total = math.EndAdd(result);
// Display results in a Label control.
Total.Text = "Total: " + total.ToString();
}
</script>
<body>
<form action="MathClient.aspx" runat=server>
<font face="Verdana">
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 id="Total_Button"
text="Total"
OnClick="EnterBtn_Click"
runat=server/>
<p>
<asp:label id="Total" runat=server/>
</font>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Net" %>
<html>
<script language="VB" runat="server">
Sub EnterBtn_Click(Src As Object, E As EventArgs)
Dim math As New MyMath.Math()
' Call to Add Web service method asynchronously
' and then wait for it to complete.
Dim result As IAsyncResult = _
math.BeginAdd(Convert.ToInt32(Num1.Text), _
Convert.ToInt32(Num2.Text), _
Nothing, _
Nothing)
' Wait for asynchronous call to complete.
result.AsyncWaitHandle.WaitOne()
' Complete the asynchronous call to Add Web service method.
Dim addtotal As Single = math.EndAdd(result)
' Display results in a Label control.
Total.Text = "Total: " & addtotal.ToString()
End Sub
</script>
<body>
<form action="MathClient.aspx" runat=server>
<font face="Verdana">
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 id="Total_Button"
text="Total"
OnClick="EnterBtn_Click"
runat=server/>
<p>
<asp:label id="Total" runat=server/>
</font>
</form>
</body>
</html>
Vea también
Tareas
Cómo: Implementar un cliente de servicio web asincrónico con la técnica de espera
Cómo: Implementar un cliente de servicio Web asincrónico con la técnica de devolución de llamada
Conceptos
Instrucciones de diseño para servicios web XML creados con ASP.NET
Comunicar de forma asincrónica con servicios web XML