Windows 8手机检查URL是否有效且有效,没有定义

时间:2014-08-08 22:31:58

标签: c# windows-phone-8 webrequest webresponse

我想检查一下用户提供的URL是否有效。因为如果不是,例如“http://www.stackoverflow”那么它将在以后崩溃程序。我试图使用Web响应,但它找不到Irequest.GetResponse()的定义;

 try
            {
                string url = HomepageTextBox.Text;
                if (url != "")
                {
                    WebRequest Irequest = WebRequest.Create(url);
                    WebResponse Iresponse = Irequest.GetResponse();

                    if (Iresponse != null)
                    {

                    }
                }
                else
                {
                    HomepageTextBox.Text = "http://www.google.com";
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Invalid URL");
            }

提前谢谢你:)

如果您需要更多详细信息,请发表评论,我将很乐意进一步详细解释:)

1 个答案:

答案 0 :(得分:0)

我记得有同样的问题,在查看MSDN网页后,我认为它是不正确的。在WP8.0中没有GetResponse(),但在WP8.1中有GetResponseAsync()。

所以我决定改用HttpWebRequest并使用BeginGetResponse / EndGetResponse - 据我所知你必须使用回调。这是一个简单的例子。


public void GetWebAddress(string web_address)
{
    HttpWebRequest request = (HttpWebRequest) HttpWebRequest.Create(web_address);
    if (request != null) request.BeginGetResponse(MyHttpCallback, request);            
}

void MyHttpCallback(IAsyncResult result)
{
    HttpWebRequest request = result.AsyncState as HttpWebRequest;
    if (request != null)
    {
        try
        {
            // if you're using 8.1 try enclosing theses lines with "using"
            // there is no .Close()

            WebResponse response = request.EndGetResponse(result);

            StreamReader reader;
            reader = new StreamReader(response.GetResponseStream());

            string responseText = reader.ReadToEnd();
            // reponseText now contains the html/text of the page


            reader.Close();
            response.Close();
        }
        catch (WebException e)
        {
            // your errors are here, set your flags
            string error_string = e.Message;
        }
    }
}