Ich bin ein wenig verwirrt. Ich versuche, asynchron auf meinem Web-Service zu veröffentlichen, idealerweise möchte ich die Anfrage starten, ein Lade-Spinner auf der Benutzeroberfläche anzeigen und dann, wenn die Async-Anfrage die Antwort verarbeitet und entweder einen Fehler anzeigt, falls vorhanden, oder machen Sie eine andere Operation mit dem Ergebnis.Wie bekomme ich die Antwort einer asynchronen Webanfrage von außerhalb der Methode?
Hier ist mein Code, ich die Anfrage hier anrufen und einige Daten in geben
private void SignInExecute()
{
if (Username == null || Password == null)
{
LoginOutput = "Please provide a username or password.";
}
else
{
this.webService.SendLoginRequest("http://localhost:3000/client_sessions", "username=" + Username + "&password=" + Password);
}
}
Und hier ist der eigentliche Code Web-Anfrage.
public void SendLoginRequest(string url, string postdata)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.Accept = "application/json";
byte[] byteArray = Encoding.UTF8.GetBytes(postdata);
request.CookieContainer = new CookieContainer();
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
((HttpWebRequest)request).KeepAlive = false;
request.BeginGetResponse(new AsyncCallback(GetLoginResponseCallback), request);
}
private static void GetLoginResponseCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
// End the operation
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
Stream streamResponse = response.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
string responseString = streamRead.ReadToEnd();
Console.WriteLine(responseString);
// Close the stream object
streamResponse.Close();
streamRead.Close();
response.Close();
}
So zu summieren. Ich möchte in der Lage sein, die Antwort an das Objekt zurückzugeben, das ursprünglich den Aufruf für die Webanforderung zum Starten gab. Irgendeine Hilfe?
Winforms/Webformulare/Silverlight/was? –
WPF, dachte nicht, dass es zu wichtig war hinzuzufügen. Die Tags wurden aktualisiert, um sie wiederzugeben. – benjgorman