【问题标题】:HttpWebRequest in UWP (C#)UWP 中的 HttpWebRequest (C#)
【发布时间】:2016-12-14 15:04:35
【问题描述】:

我正在编写代码来向网站发送 HttpWebRequest

如果网站正在运行,它将返回HttpStatusCode.OK

如果不是,它将返回HttpStatusCode.NotFound

我的代码

 var url = "http://simplegames.com.ua/";

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        if (response.StatusCode == HttpStatusCode.OK)
        {
             Debug.WriteLine("All ok");
        }
        else if (response.StatusCode == HttpStatusCode.NotFound)
        {
            Debug.WriteLine("URL not working");
        }
        response.Close();

但我有错误

1) 严重性代码描述项目文件行抑制状态 错误 CS1061 'HttpWebRequest' 不包含 'GetResponse' 并且没有扩展方法 'GetResponse' 接受第一个 可以找到“HttpWebRequest”类型的参数(您是否缺少 使用指令或程序集 参考?)Milano C:\Users\nemes\Documents\GitHub\Milano_pizza\Milano\MainPage.xaml.cs 50 Active

2) 严重性代码描述项目文件行抑制状态 错误 CS1929 'HttpWebResponse' 不包含 “关闭”和最佳扩展方法重载 'ExtensionMethods.Close(Stream)' 需要接收器类型 'Stream' Milano C:\Users\nemes\Documents\GitHub\Milano_pizza\Milano\MainPage.xaml.cs 59 活动

【问题讨论】:

  • 您是在构建时收到该错误,还是在写出来时收到该错误?您是否尝试过完全退出 Visual Studio 并重新进入?有时 VS 会感到困惑。
  • 是的。我试过这个@JeremyHolovacs
  • 您的代码或命名空间中是否还有另一个名为 HttpWebRequest 的类?
  • 不。也许在uwp中需要以不同的方式编写? @JeremyHolovacs
  • 一般来说,我认为您希望在 UWP 中使用 HttpClient 而不是 HttpWebRequest,但我不知道这是否能解决您的问题。

标签: c# visual-studio uwp


【解决方案1】:

虽然我们可以在 UWP 应用程序中使用HttpWebRequest Class,但不是它的所有方法。 HttpWebRequest.GetResponse methodHttpWebResponse.Close Method 是不能在 UWP 应用中使用的方法。通常,我们可以通过查看文档底部的版本信息来确定某个方法是否可以在 UWP 应用中使用。如果我们可以在版本信息下找到Universal Windows Platform,那么我们应该可以在UWP应用中使用此方法。

在 .NET Core/UWP 中,System.Net.HttpWebRequest 类System.Net.Requests 库中,不推荐使用。参考。 .NET Networking APIs for UWP Apps:

System.Net.Requests

该库包含与 System.Net.HttpWebRequestSystem.Net.HttpWebResponse 类相关的类型,允许开发人员实现 HTTP 协议的客户端角色。 .NET Core 5 的 API 表面与适用于 Windows 8.1 应用程序的 API 表面相同,并且与 .NET Framework 中的表面相比非常有限。这是有意的,我们强烈鼓励改用 HttpClient API - 这是我们未来的精力和创新的重点。 p>

提供此库纯粹是为了向后兼容并取消阻止使用使用这些旧 API 的 .NET 库。对于 .NET Core,HttpWebRequest 的实现实际上是基于 HttpClient(从 .NET Framework 中颠倒依赖顺序)。如上所述,这样做的原因是为了避免在 UWP 应用上下文中使用托管 .NET HTTP 堆栈,并将 HttpClient 作为 .NET 开发人员的单个 HTTP 客户端角色 API。

在 UWP 中,我们有两个 HttpClient API,它们是 System.Net.Http.HttpClientWindows.Web.Http.HttpClient。您可以根据自己的要求选择其中任何一个。有关这两个 HttpClient API 的更多信息,请参阅Demystifying HttpClient APIs in the Universal Windows Platform

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多