我正在用visual c#2005制作一个简单的程序,在雅虎上查找股票符号!Finance,下载历史数据,然后绘制指定股票代码的价格历史.

我知道获取数据所需的确切URL,以及用户是否输入了现有的股票代码(或至少输入了Yahoo!上的数据).金融)它工作得非常好.但是,当程序试图从不存在的网页中提取数据时,如果用户编造了一个自动收报机符号,我就会出现运行时错误.

我正在使用WebClient类,并使用DownloadString函数.我查看了WebClient类的所有其他成员函数,但没有看到可以用来测试URL的任何内容.

我该怎么做?

推荐答案

你可以发出"HEAD"个请求,而不是"得到"?

// using MyClient from linked post
using(var client = new MyClient()) {
    client.HeadOnly = true;
    // fine, no content downloaded
    string s1 = client.DownloadString("http://google.com");
    // throws 404
    string s2 = client.DownloadString("http://google.com/silly");
}

你可以在DownloadString附近的try/catch处判断错误;没有错吗?它存在...


使用C#2.0(VS2005):

private bool headOnly;
public bool HeadOnly {
    get {return headOnly;}
    set {headOnly = value;}
}

using(WebClient client = new MyClient())
{
    // code as before
}

.net相关问答推荐

.NET Blazor-使用子组件中的处理程序方法进行双向数据绑定

";Make Async ValueTask/ValueTask方法分期分配发生了什么?

DotNet COM初始化问题

在 F# 中处理 Option - Some(null) 的好策略是什么

F#:跨度、提升和底部类型(或缺乏)

dotnet ef dbcontext scaffold command --data-annotations 或 -d 命令行参数似乎不起作用

既然 .NET 有一个垃圾收集器,为什么我们需要终结器/析构器/dispose-pattern?

我在哪里可以获得线程安全的 CollectionView?

调整小数精度,.net

在 .NET C# 中存储加密密钥的最佳方式

是什么让 Enum.HasFlag 这么慢?

我应该从 .NET 中的 Exception 或 ApplicationException 派生自定义异常吗?

序列化私有成员数据

从 C# 中的接口继承 XML 注释

如何在多个解决方案之间共享相同的 Resharper 设置,无需人工干预?

在 .NET Core 中在 MVC 之外使用 Razor

自创建数据库以来,支持ApplicationDbContext上下文的模型已更改

了解 C# 中的协变和逆变接口

如何使用通用扩展方法中的字符串列名在 IQueryable 上应用 OrderBy?

如何向 C# Winforms 中的标签添加提示或工具提示?