Oluşturduğum bir API'dan bir kimlik doğrulama belirtecini döndürmesi gereken bu kodu kullanıyorum. Benim sayfa görünümünde, SonraC# Web isteğinden sonra Task <string> dizesinden nasıl dize alabilirim?
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
}
: Ben bir asenkron yaklaşım için gitti ama şimdi dize jetonu almak üzere benim belirli durumda ne yapacağını emin değilim, değil Görev, İşte benim kodudur bunu yapar bir olay işleyicisi var:
loginButton.Clicked += (object sender, EventArgs e) => {
Authentication a = new Authentication();
string tok = a.StoreTokenFromLogin(usernameInput.Text, passwordInput.Text);
authLabel.Text = tok;
};
Ancak, düğme, uygulama donuyor tıkladığınızda. (Ben Xamarin.Forms'deyim).
Jeton türü nedir? Sizin yönteminiz bir Görev 've Görev . Sonuç '' string' döndürmelidir. –
Sven
Sadece AuthLogin() yönteminin sonucunu almaya çalıştım. Yanlış olabilirim, çünkü kendimi çok fazla karıştırdım. – alexcons
Evet, Görev. Sonuç, "dizgiyi" almanın doğru yoludur. Ne ** tam olarak ** geri dönüyor? –
Sven