我正在基于webbrowser
控件的Windows窗体应用程序中创建一个Web浏览器。
我正在尝试将网址textbox
设置为2个目的:用于导航和搜索,例如在chrome中。
我添加了这段代码:
try
{
Uri urlResult = new Uri(urlText.Text);
webbrowser1.Navigate(urlText.Text);
}
catch
{
webbrowser1.Navigate("http://google.com/search?q=" + urlText.Text);
}
问题是当我输入“youtube.com”时,这不能是Uri
所以我在谷歌中得到这个
如何执行此操作? 欢迎任何其他建议 提前谢谢
答案 0 :(得分:0)
问题:在您当前的代码中,您没有检查URL是否有效。您需要首先验证给定的URL是否可访问。
解决方案:创建一个单独的函数来验证网址是否成功,然后导航到网址,否则在谷歌中打开它。
试试这个:
using using System.Net;
private void button3_Click_1(object sender, EventArgs e)
{
string url = string.Empty;
string urlProtocol = "http://"; //or https
if (!urlText.Text.Trim().Contains(urlProtocol))
url = urlProtocol + urlText.Text;
else
url = urlText.Text;
if (CheckURL(url))
{
Uri urlResult = new Uri(url);
webbrowser1.Navigate(url);
}
else
{
webbrowser1.Navigate("http://google.com/search?q=" + urlText.Text);
}
}
bool CheckURL(string url)
{
var req = (HttpWebRequest)HttpWebRequest.Create(url);
bool isURLValid = false;
req.AllowAutoRedirect = false;
try
{
using (var resp = req.GetResponse())
{
var location = resp.Headers["Location"];
if (!String.IsNullOrEmpty(location))
{
isURLValid = true;
}
}
}
catch
{
isURLValid = false;
}
return isURLValid;
}