AsyncHttpWebRequest(网页标题检索程序)

时间:2011-12-23 07:18:15

标签: c# asynchronous httpwebrequest

我正在尝试创建一个程序来检索给定网址的页面标题。我编写的代码在我不使用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);
}

感谢。

2 个答案:

答案 0 :(得分:1)

我认为,问题是,在返回异步结果之前,程序结束了。 在执行Console.Writeline之后的主线程死了。

休息看起来没问题。在MSDN

的BeginGetResponse

答案 1 :(得分:0)

在回调中的代码周围放置一个try / catch块,看看是否有任何东西抛出异常。

否则更多细节会有用。如果你说代码没有执行,你实际上是在单步执行代码/使用断点,还是假设这是基于你的控制台输出的情况?此请求是否来自应用程序的主窗口线程?