Visual Basic (Declaration) | |
---|---|
Public Sub DownloadStringAsync( _ ByVal uri As Uri, _ Optional ByVal parameters As IDictionary(Of String,String), _ Optional ByVal httpMethod As ArcGISWebClient.HttpMethods, _ Optional ByVal userState As Object _ ) |
C# | |
---|---|
public void DownloadStringAsync( Uri uri, IDictionary<string,string> parameters, ArcGISWebClient.HttpMethods httpMethod, object userState ) |
Use the ArcGISWebClient.DownloadStringAsync Method / ArcGISWebClient.DownloadStringCompleted Event to process (read/write) text such as: JSON, XAML, XML, and HTML.
Use the ArcGISWebClient.OpenReadAsync Method / ArcGISWebClient.OpenReadCompleted Event to process (read/write) binary streams of data such as: images, files (.doc, .pdf, .exe), music, movies, etc.
Parameters
- uri
- A System.Uri containing the URI to download.
- parameters
- The collection of query key/value pairs associated with the request.
- httpMethod
- The HTTP method to use.
- userState
- The user-specified identifier for the asynchronous task.
How to use:
Click the 'DownloadStringAsync' Button to start an ArcGISWebClient operation. Status information will be displayed. The ArcGISWebClient operation could take several minutes to complete before it displays the JSON response string in the TextBox. Repeat clicking the 'DownloadStringAsync' button but before the ArcGISWebClient completes, click the 'CancelAsync' button to kill the operation.
The XAML code in this example is used in conjunction with the code-behind (C# or VB.NET) to demonstrate the functionality.
The following screen shot corresponds to the code example in this page.
XAML | Copy Code |
---|---|
<Grid x:Name="LayoutRoot" Background="White"> <!-- Buttons to perform the work. --> <Button Content="DownloadStringAsync" Height="40" Width="201" HorizontalAlignment="Left" Margin="12,135,0,0" Name="Button_DownloadStringAsync" VerticalAlignment="Top" Click="Button_DownloadStringAsync_Click" /> <Button Content="CancelAsync" Height="40" Width="201" HorizontalAlignment="Left" Margin="12,184,0,0" Name="Button_CancelAsync" VerticalAlignment="Top" Click="Button_CancelAsync_Click" IsEnabled="False"/> <!-- Provide ArcGISWebClient information messages. --> <sdk:Label Height="19" HorizontalAlignment="Left" Margin="229,131,0,0" Name="Label_StatusInfo" VerticalAlignment="Top" Width="120" Content="Status Information:"/> <ListBox Height="80" HorizontalAlignment="Left" Margin="229,147,0,0" Name="ListBox_StatusInformation" VerticalAlignment="Top" Width="383" /> <!-- Display the Response for the ArcGISWebClient operation. --> <TextBox Height="355" HorizontalAlignment="Left" Margin="12,233,0,0" Name="TextBox_Response" VerticalAlignment="Top" Width="600" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" /> <!-- Provide the instructions on how to use the sample code. --> <TextBlock Height="94" HorizontalAlignment="Left" Name="TextBlock1" VerticalAlignment="Top" Width="625" TextWrapping="Wrap" Text="Click the 'DownloadStringAsync' Button to start an ArcGISWebClient operation. Status information will be displayed. The ArcGISWebClient operation could take several minutes to complete before it displays the JSON response string in the TextBox. Repeat clicking the 'DownloadStringAsync' button but before the ArcGISWebClient completes, click the 'CancelAsync' button to kill the operation." /> </Grid> |
C# | Copy Code |
---|---|
// Create a Global (aka. Member) variable for the ArcGISWebClient object that will be used in other parts of the application. private ESRI.ArcGIS.Client.ArcGISWebClient _ArcGISWebClient; private void Button_DownloadStringAsync_Click(object sender, System.Windows.RoutedEventArgs e) { // Clear out any existing messages. ListBox_StatusInformation.Items.Clear(); TextBox_Response.Text = ""; // Set the _ArcGISWebClient variable to a new instance of the ArcGISWebClient Class. _ArcGISWebClient = new ESRI.ArcGIS.Client.ArcGISWebClient(); // Wire up an Event Handler for the ArcGISWebClient.DownloadStringCompleted Event. _ArcGISWebClient.DownloadStringCompleted += arcgisWebClient_DownloadStringCompleted; // Prevent the internet browser from using a cache for the ArcGISWebClient operations. Useful in this example because // running it two or more times would just use the internet browsers cached result basically rendering the CancelAsync // Button useless. _ArcGISWebClient.DisableClientCaching = true; // Provide a valid Url for the ArcGISWebClient request. string myUrl = "http://services.arcgisonline.com/ArcGIS/rest/services/Demographics/USA_1990-2000_Population_Change/MapServer/1/query"; // Rather than having all of the parameter arguments as part of the Url, create a parameter collection. System.Collections.Generic.IDictionary<string, string> myParameters = new System.Collections.Generic.Dictionary<string, string>(); myParameters.Add("where", "POPGRW00CY > 100"); // Restrict the number of records returned. myParameters.Add("returnGeometry", "false"); // Do not include the geometry coordinate values. myParameters.Add("outFields", "*"); // Return all of the fields. myParameters.Add("f", "pjson"); // Get the results back in the 'pretty' JSON format. // NOTE: If you did not want to use a parameter collection you could have used a Url like the following: // http://services.arcgisonline.com/ArcGIS/rest/services/Demographics/USA_1990-2000_Population_Change/MapServer/1/query?where=POPGRW00CY+%3E+100&returnGeometry=false&outFields=*&f=pjson // Invoke the ArcGISWebClient.DownloadStringAsync Method passing in the Url, parameter collection, and null for a user token. _ArcGISWebClient.DownloadStringAsync(new Uri(myUrl), myParameters,ESRI.ArcGIS.Client.ArcGISWebClient.HttpMethods.Auto,null); // Update the status informational messages. ListBox_StatusInformation.Items.Add("The ArcGISWebClient operation was started."); ListBox_StatusInformation.Items.Add("(It could take a few minutes)"); // Enable stopping the ArcGISWebClient operation. Button_CancelAsync.IsEnabled = true; } private void Button_CancelAsync_Click(object sender, System.Windows.RoutedEventArgs e) { // This will cancel the ArcGISWebClient operation. _ArcGISWebClient.CancelAsync(); } private void arcgisWebClient_DownloadStringCompleted(object sender, ESRI.ArcGIS.Client.ArcGISWebClient.DownloadStringCompletedEventArgs e) { // Get the whether the ArcGISWebClient operation was canceled. bool IsCanceled = e.Cancelled; // Get the JSON string result from the ArcGISWebClient operation. string theResult = e.Result; if (IsCanceled) { // The user canceled the ArcGISWebClient operation. // Update the status informational messages. ListBox_StatusInformation.Items.Add("The ArcGISWebClient operation was canceled."); } else { // The ArcGISWebClient operation completed successfully. // Update the status informational messages. ListBox_StatusInformation.Items.Add("The ArcGISWebClient operation completed."); // Display the JSON string response to the user. TextBox_Response.Text = theResult; } // Disable the ability to CancelAsync Button. Button_CancelAsync.IsEnabled = false; } |
VB.NET | Copy Code |
---|---|
' Create a Global (aka. Member) variable for the ArcGISWebClient object that will be used in other parts of the application. Private _ArcGISWebClient As ESRI.ArcGIS.Client.ArcGISWebClient Private Sub Button_DownloadStringAsync_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) ' Clear out any existing messages. ListBox_StatusInformation.Items.Clear() TextBox_Response.Text = "" ' Set the _ArcGISWebClient variable to a new instance of the ArcGISWebClient Class. _ArcGISWebClient = New ESRI.ArcGIS.Client.ArcGISWebClient ' Wire up an Event Handler for the ArcGISWebClient.DownloadStringCompleted Event. AddHandler _ArcGISWebClient.DownloadStringCompleted, AddressOf arcgisWebClient_DownloadStringCompleted ' Prevent the internet browser from using a cache for the ArcGISWebClient operations. Useful in this example because ' running it two or more times would just use the internet browsers cached result basically rendering the CancelAsync ' Button useless. _ArcGISWebClient.DisableClientCaching = True ' Provide a valid Url for the ArcGISWebClient request. Dim myUrl As String = "http://services.arcgisonline.com/ArcGIS/rest/services/Demographics/USA_1990-2000_Population_Change/MapServer/1/query" ' Rather than having all of the parameter arguments as part of the Url, create a parameter collection. Dim myParameters As System.Collections.Generic.IDictionary(Of String, String) = New System.Collections.Generic.Dictionary(Of String, String) myParameters.Add("where", "POPGRW00CY > 100") ' Restrict the number of records returned. myParameters.Add("returnGeometry", "false") ' Do not include the geometry coordinate values. myParameters.Add("outFields", "*") ' Return all of the fields. myParameters.Add("f", "pjson") ' Get the results back in the 'pretty' JSON format. ' NOTE: If you did not want to use a parameter collection you could have used a Url like the following: ' http://services.arcgisonline.com/ArcGIS/rest/services/Demographics/USA_1990-2000_Population_Change/MapServer/1/query?where=POPGRW00CY+%3E+100&returnGeometry=false&outFields=*&f=pjson ' Invoke the ArcGISWebClient.DownloadStringAsync Method passing in the Url, parameter collection, and nothing for a user token. _ArcGISWebClient.DownloadStringAsync(New Uri(myUrl), myParameters, ESRI.ArcGIS.Client.ArcGISWebClient.HttpMethods.Auto, Nothing) ' Update the status informational messages. ListBox_StatusInformation.Items.Add("The ArcGISWebClient operation was started.") ListBox_StatusInformation.Items.Add("(It could take a few minutes)") ' Enable stopping the ArcGISWebClient operation. Button_CancelAsync.IsEnabled = True End Sub Private Sub Button_CancelAsync_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) ' This will cancel the ArcGISWebClient operation. _ArcGISWebClient.CancelAsync() End Sub Private Sub arcgisWebClient_DownloadStringCompleted(sender As Object, e As ESRI.ArcGIS.Client.ArcGISWebClient.DownloadStringCompletedEventArgs) ' Get the whether the ArcGISWebClient operation was canceled. Dim IsCanceled As Boolean = e.Cancelled ' Get the JSON string result from the ArcGISWebClient operation. Dim theResult As String = e.Result If IsCanceled Then ' The user canceled the ArcGISWebClient operation. ' Update the status informational messages. ListBox_StatusInformation.Items.Add("The ArcGISWebClient operation was canceled.") Else ' The ArcGISWebClient operation completed successfully. ' Update the status informational messages. ListBox_StatusInformation.Items.Add("The ArcGISWebClient operation completed.") ' Display the JSON string response to the user. TextBox_Response.Text = theResult End If ' Disable the ability to CancelAsync Button. Button_CancelAsync.IsEnabled = False End Sub |
Target Platforms: Windows XP Professional, Windows Server 2003 family, Windows Vista, Windows Server 2008 family, Windows 7