Я использую следующий код для отправки данных на сервер с Windows Phone 8.Как узнать, когда запрос после завершения асинхронной КР8
responseString подходит как значения по умолчанию.
Однако, если вы проверили его через несколько секунд, он будет обновлен.
Есть ли способ узнать, когда запрос завершен
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using System.IO;
using System.Text;
namespace Blood_Bank
{
public partial class Page1 : PhoneApplicationPage
{
String responseString = "amit";
public event Action Completed;
StringBuilder postData = new StringBuilder();
public Page1()
{
InitializeComponent();
}
private void submit_Click(object sender, RoutedEventArgs e)
{
// Create a new HttpWebRequest object
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.mywindowsproject.appspot.com");
// request.ContentType = "text/html";
// Set the Method property to 'POST' to post data to the URI.
request.Method = "POST";
// start the asynchronous operation
postData.Append("name=" + name.Text.ToString()+"&");
request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);
MessageBox.Show(responseString);
}
private void GetRequestStreamCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
// End the operation
Stream postStream = request.EndGetRequestStream(asynchronousResult);
// Convert the string into a byte array.
byte[] byteArray = Encoding.UTF8.GetBytes(postData.ToString());
// Write to the request stream.
postStream.Write(byteArray, 0, postData.Length);
postStream.Close();
// Start the asynchronous operation to get the response
request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
}
private void GetResponseCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
// End the operation
try
{
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
Stream streamResponse = response.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
responseString = streamRead.ReadToEnd();
streamResponse.Close();
streamRead.Close(); response.Close();
if (Completed != null)
Completed();
}
catch (WebException e)
{
}
}
}
}