c# – ‘System.Net.HttpWebRequest’不包含’GetRequestStream’的定义

前端之家收集整理的这篇文章主要介绍了c# – ‘System.Net.HttpWebRequest’不包含’GetRequestStream’的定义前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是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()并显示一条错误消息:

error CS1061: ‘System.Net.HttpWebRequest’ does not contain a
definition for ‘GetRequestStream’ and no extension method
‘GetRequestStream’ accepting a first argument of type
‘System.Net.HttpWebRequest’ could be found (are you missing a using
directive or an assembly reference?)

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

解决方法

HttpWebRequest在WP8中没有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

原文链接:https://www.f2er.com/csharp/96549.html

猜你在找的C#相关文章