Benim yöntemim bir web servisi çağırıyor ve eşzamansız çalışıyor.Bir dizgeyi async'den döndürme
Yanıt alırken her şey iyi çalışıyor ve yanıtımı alıyorum.
Bu yanıtı geri vermem gerektiğinde sorun başlıyor. Burada
yöntemimin kodudur:public async Task<string> sendWithHttpClient(string requestUrl, string json)
{
try
{
Uri requestUri = new Uri(requestUrl);
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Clear();
...//adding things to header and creating requestcontent
var response = await client.PostAsync(requestUri, requestContent);
if (response.IsSuccessStatusCode)
{
Debug.WriteLine("Success");
HttpContent stream = response.Content;
//Task<string> data = stream.ReadAsStringAsync();
var data = await stream.ReadAsStringAsync();
Debug.WriteLine("data len: " + data.Length);
Debug.WriteLine("data: " + data);
return data;
}
else
{
Debug.WriteLine("Unsuccessful!");
Debug.WriteLine("response.StatusCode: " + response.StatusCode);
Debug.WriteLine("response.ReasonPhrase: " + response.ReasonPhrase);
HttpContent stream = response.Content;
var data = await stream.ReadAsStringAsync();
return data;
}
}
}
catch (Exception ex)
{
Debug.WriteLine("ex: " + ex.Message);
return null;
}
ve ben bu şekilde sesleniyorum:
Task <string> result = wsUtils.sendWithHttpClient(fullReq, "");
Debug.WriteLine("result:: " + result);
ama böyle bir şey görüyorum sonucu yazdırırken: System.Threading.Tasks.Task
Yöntemimin içinde veri ile yaptığım gibi sonuç dizesini nasıl alabilirim. Task<string>
dönüş türü
Task<string> result = wsUtils.sendWithHttpClient(fullReq, "");
Debug.WriteLine("result:: " + result.Result); // Call the Result
Think gelecekte bir değer döndürmek için bir 'sözünü' olarak: Eğer eşzamanlıasync
yöntemini çağırarak beri
İstenen çıktıyı almak için 'Görevinizin' Sonuç property özelliğine erişmeniz gerekir. –