2

ビジネス、データ アクセス、データ レイヤーのロジックを使用してサンプル 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); 
    }
4

1 に答える 1