如何从在线文件 .text 中获取文本

Posted

技术标签:

【中文标题】如何从在线文件 .text 中获取文本【英文标题】:How to Get Text from Online File .text 【发布时间】:2015-08-21 21:29:46 【问题描述】:

我正在使用 C# 创建一个应用程序,它应该从位于以下位置的文件(在线找到)以文本形式下载数据:http://asap.eb2a.com/a.text。

我只需要获取文本数据。到目前为止我的代码:

//  this.Hide();
//  notifyIcon1.Visible = true;
WebClient Get= new WebClient();
Uri Line = new Uri("http://asap.eb2a.com/a.text");
AAA:
var text = Get.DownloadData(Line);
// var text = System.IO.File.ReadAllText(@"D:\b.txt");
//System.IO.File.Delete(@"D:\Not.text");
label1.Text = text.ToString();
while (text.ToString() == text.ToString())
try

    notifyIcon1.Visible = true;
    notifyIcon1.BalloonTipText = (Convert.ToString(text));
    notifyIcon1.BalloonTipTitle = "We Notify You";
    notifyIcon1.ShowBalloonTip(150);
    BBB:   var text1  = Get.DownloadData(Line);
    //System.IO.File.ReadAllText(@"D:\b.txt");
    while(text.ToString()==text1.ToString())
    
        await Task.Delay(50);
        goto BBB;
    
    await Task.Delay(50);
    goto AAA; 

catch

    MessageBox.Show("Error");

为了确保数据不一样,我做了一些循环,我在 Notify 中得到了这个

【问题讨论】:

请,请,请,请不要使用GOTO!您尝试做的事情可以在没有标签和 goto 操作符的情况下完成。 还有其他想法吗? @pasty 为什么需要Task.Delay(50);?为什么需要while 循环?您可以使用 DownloadString(下载完整的字符串 atz 一次)而不是 DownloadData 您到底想做什么 - 您只想要响应中的文本吗?您的问题是通知消息中显示的不需要的 html 代码吗?如果是这样,请查看调试器中的结果,以了解为什么获取的响应不符合预期。也许该网站包含解释问题的消息。 【参考方案1】:

我认为您的问题是通知图标文本中显示的 HTML 文本。可能网站 (asap.eb2a.com...) 不允许未知代理,因此它会返回一些消息通知您或 a.text 文件包含 HTML 和 javascript 代码。第一个问题可以通过添加header to the WebClient object 来绕过,就像它来自网络浏览器一样:

Get.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");

使用goto/label 构造创建的循环可以替换为System.Timers.Timer class。这也将简化您的代码:

创建 WebClient 对象以调用 uri 创建一个变量来保存下载的文本 创建一个定时器对象并绑定Elapsed事件,该事件每100毫秒调用一次 在计时器 Elapsed 事件中,使用 WebClient.DownloadString 方法从站点下载数据 比较已经保存的文本和新下载的字符串:如果不同,则显示通知图标

实现如下所示:

WebClient Get = new WebClient();
// identify your self as a web browser
Get.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
Uri uri = Uri("http://asap.eb2a.com/a.text");
string contentToShow = String.Empty;
// timer for the repetitive task called every nnn milliseconds
const long refreshIntervalInMilliseconds = 100;
System.Timers.Timer timer = new System.Timers.Timer(refreshIntervalInMilliseconds);
timer.Elapsed += (s, e) =>

    Console.WriteLine(String.Format("0 Fetching data from: 1", DateTime.Now, uri));
    try
               
        var result = Get.DownloadString(uri);
        if (result != contentToShow)
        
            contentToShow = result;
            notifyIcon1.Visible = true;
            notifyIcon1.BalloonTipText = contentToShow;
            notifyIcon1.BalloonTipTitle = "We Notify You";
            notifyIcon1.ShowBalloonTip(150);
        
    
    catch (Exception exception)
    
        MessageBox.Show(string.Format("Error: 0", exception.Message));
    
;
// start the timer
timer.Start();

【讨论】:

以上是关于如何从在线文件 .text 中获取文本的主要内容,如果未能解决你的问题,请参考以下文章

如何从 StackView 内的 UITextfield 获取文本

如何从文本字段中获取值并将其传递给变量?

KivyMD:如何从 python 中添加的 TextField 获取文本

如何从视图控制器获取自绘视图中的文本

Python - 如何获取文本文件中的行数[重复]

jsp name属性相同的多个input-text表单如何获取值?高分!在线急等,半小时给最佳答案