AsyncHttpWebRequest(网页标题检索程序)
本文关键字:程序 检索 标题 网页 AsyncHttpWebRequest | 更新日期: 2023-09-27 18:18:36
我试图创建一个程序,将检索页面标题给定的url。我写的代码,当我不使用AsyncCallback工作,但当我使用AsyncCallback代码似乎不工作。
public void GetWebPageTitle(string URL)
{
// make request for web page
HttpWebRequest myWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL);
myWebRequest.Method = "GET";
myWebRequest.BeginGetResponse(new AsyncCallback(FinishWebRequest), myWebRequest);
zConsole.WriteLine("Beginning HttpWebRequest for: " + URL);
}
void FinishWebRequest(IAsyncResult result)
{
zConsole.WriteLine("...");
string title = "Unknown";
//Code under here doesnt get extcuted
HttpWebResponse myWebResponse = (HttpWebResponse)((HttpWebRequest)result.AsyncState).EndGetResponse(result);
StreamReader myWebSource = new StreamReader(myWebResponse.GetResponseStream());
string source = "";
source = myWebSource.ReadToEnd();
myWebResponse.Close();
title = Regex.Match(source, @"'<title'b[^>]*'>'s*(?<Title>['s'S]*?)'</title'>", RegexOptions.IgnoreCase).Groups["Title"].Value;
zConsole.WriteLine(title);
}
谢谢。
我认为,问题是,你的程序结束之前,异步结果返回。执行控制台后的主线程。Writeline死亡。
休息看起来不错。
在回调代码周围放置一个try/catch块,看看是否有任何东西抛出异常。
否则,更多的细节将是有用的。当你说代码没有被执行时,你实际上是在逐步执行代码/使用断点,还是你假设这是基于控制台输出的情况?这个请求是从应用程序的主窗口线程发出的吗?