我们正在开发一个具有业务、数据访问、数据层逻辑的示例 MWC 应用程序。
在核心项目中,我们使用以下代码来使用来自 json 解析的数据。此代码适用于 Xamarin.Android 和 Xamarin.iOS,但对于 Windows Phone,它显示错误,因为“System.Net.WebRequest 不包含 GetResponse 的定义并且没有 GetResponse 的扩展方法...”
我们尝试使用异步方法来使用 WCF Rest 服务 json 数据,但它在调用完成的方法之前返回为 null。
是否可以等待并从完成的方法中获取数据以返回 json 集合?如果没有,请建议如何实现相同的目标。
public String login<T>(T item) where T : BusinessLayer.Contracts.IBusinessEntity, new()
{
var request = HttpWebRequest.Create(url);
request.ContentType = "application/json";
request.Method = "get";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
var content = reader.ReadToEnd();
string nss = content.ToString();
check = nss;
return nss;
}
}
return Check;
}
编辑:我已经包含了异步函数的示例代码。
在执行 DownloadStringCompleted 事件之前,它返回空值。我们需要 DownloadStringCompleted 输出字符串进行进一步处理。
async Task<string> AccessTheWebAsync(string url)
{
var webClient = new WebClient();
webClient.DownloadStringCompleted += (sender, e) =>
{
string data = (string)e.Result;
check = data;
};
webClient.DownloadStringAsync(new Uri(url));
return check;
}
public async Task<string> login<T>(T item) where T : BusinessLayer.Contracts.IBusinessEntity, new()
{
return check = await AccessTheWebAsync(item.url);
}