Ich habe diesen Code, der ein Authentifizierungstoken von einer API zurückgeben soll, die ich gebaut habe. Ich habe für einen asynchronen Ansatz gegangen, aber jetzt bin ich nicht sicher, was in meinem speziellen Fall zu tun, um die Zeichenfolge-Token zu bekommen, nicht die Aufgabe, Hier ist mein Code:C# Wie bekomme ich eine Zeichenfolge von Aufgabe <string> nach einer Webanfrage?
private async Task<string> AuthLogin(string user, string pass)
{
string username = user;
string password = pass;
string url = "http://localhost:8000/login";
try {
//retrieve auth token from /login
var client = new HttpClient();
client.BaseAddress = new Uri(url);
string jsonData = "{\"username\":" + "\"" + username + "\",\"password\":" + "\"" + password + "\"}";
var content = new StringContent (jsonData, Encoding.UTF8, "application/type");
HttpResponseMessage resp = await client.PostAsync (new Uri (url), content);
string s = await resp.Content.ReadAsStringAsync();
string result = Convert.ToString (s);
//some formatting to extract the actual token string
string[] tokenParts = result.Split (':');
string token = tokenParts[1].Replace ("\"", "");
return token;
}
catch (WebException) {
//error handling here
return null;
}
}
public string StoreTokenFromLogin(string user, string pass)
{
var token = AuthLogin (user, pass).Result;
System.Diagnostics.Debug.WriteLine(token);
System.Diagnostics.Debug.WriteLine(token.GetType());
return token; //should be a string
}
Dann in meiner Seite Ansicht, I Habe einen Event-Handler, der das tut:
loginButton.Clicked += (object sender, EventArgs e) => {
Authentication a = new Authentication();
string tok = a.StoreTokenFromLogin(usernameInput.Text, passwordInput.Text);
authLabel.Text = tok;
};
Wenn ich jedoch auf den Button klicke, bleibt die App stehen. (Ich bin in Xamarin.Forms).
Welcher Typ ist 'Token'? Ihre Methode gibt eine 'Task' zurück und die 'Task .Result' sollte die' Zeichenfolge' zurückgeben. –
Sven
Ich habe gerade versucht, das Ergebnis der AuthLogin() zu bekommen, die mir eine Zeichenfolge geben sollte, tut es aber nicht. Ich könnte mich jedoch irren, weil ich mich zu sehr verwirrte. – alexcons
Ja, Aufgabe. Ergebnis ist der richtige Weg, um die 'Zeichenfolge' zu erhalten. Was ** genau ** gibt es zurück? –
Sven