ビジネス、データ アクセス、データ レイヤーのロジックを使用してサンプル MWC アプリケーションを開発していました。
コア プロジェクトでは、json 解析からのデータを使用するために次のコードを使用しました。このコードは、Xamarin.Android および Xamarin.iOS では正常に機能しますが、Windows Phone では、「System.Net.WebRequest に GetResponse の定義が含まれておらず、GetResponse の拡張メソッドがありません...」というエラーが表示されます。
WCF Rest サービスの json データを使用するために Async メソッドを使用しようとしましたが、完了したメソッドが呼び出される前に 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;
}
編集: Async 関数のサンプル コードを含めました。
DownloadStringCompleted イベントを実行する前に、null 値を返します。さらなる処理のために DownloadStringCompleted 出力文字列が必要です。
注: Xamarin の Taskyのロジックに従っていました。
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);
}