10

我是 C# 和 Windows 手机的新手,我正在尝试制作一个执行 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

HttpWebRequest在 WP8中没有GetRequestStreamGetRequestStreamAsync 。您最好的选择是创建一个任务并等待它,如下所示:

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 回答