& # 39; System.Net.HttpWebRequest& # 39;不包含'GetRequestSt

本文关键字:GetRequestSt 包含 Net System HttpWebRequest | 更新日期: 2023-09-27 17:53:49

我是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. net . 'HttpWebRequest'不包含定义'GetRequestStream',没有扩展方法'GetRequestStream'接受类型的第一个参数"System.Net。HttpWebRequest'可以找到(你错过了一个使用指令还是程序集引用?)

对为什么会发生这种情况有什么想法吗?我已经导入了System.Net

& # 39; System.Net.HttpWebRequest& # 39;不包含'GetRequestSt

HttpWebRequest在WP8中没有GetRequestStreamGetRequestStreamAsync。最好的方法是创建一个Task并等待它,如下所示:

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