10

私は C# と Windows phone の両方に不慣れで、JSON 要求を実行する小さなアプリを作成しようとしています。この投稿の例に従っています https://stackoverflow.com/a/4988809/702638

私の現在のコードはこれです:

public string login()
{
    var httpWebRequest = (HttpWebRequest)WebRequest.Create(MY_URL);
    httpWebRequest.ContentType = "text/plain"; 
    httpWebRequest.Method      = "POST";

    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
    {
       string text = MY_JSON_STRING;
       streamWriter.Write(text);
    }
}

しかし、何らかの理由で Visual Studio がGetRequestStream()エラー メッセージでフラグを立てています。

エラー CS1061: 'System.Net.HttpWebRequest' に 'GetRequestStream' の定義が含まれておらず、タイプ 'System.Net.HttpWebRequest' の最初の引数を受け入れる拡張メソッド 'GetRequestStream' が見つかりませんでした (using ディレクティブが不足しているか、またはアセンブリ参照?)

なぜこれが起こるのかについて何か考えはありますか?私はすでにSystem.Netパッケージをインポートしました。

4

1 に答える 1

16

WP8では、HttpWebRequest にはGetRequestStreamまたはGetRequestStreamAsyncがありません。あなたの最善の策は、次のようにタスクを作成して待機することです。

using (var stream = await Task.Factory.FromAsync<Stream>(request.BeginGetRequestStream, request.EndGetRequestStream, null))
{
    // ...
}

編集: C# を初めて使用することを述べたように、await キーワードを使用するには、ログイン メソッドを非同期にする必要があります。

public async Task<string> LoginAsync()
{
    // ...
}

ログインする呼び出し元は、呼び出し時に await キーワードを使用する必要があります。

string result = await foo.LoginAsync();

この件に関する優れた入門書は次のとおりです。 http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx

于 2013-01-15T18:14:20.583 に答える