我正在开发一个应用程序,我需要根据用户提供的URL捕获网站的标题,描述和图像等基本细节。
但是,用户可能会输入www.google.com http://www.google.com,但C#.net代码无法检索" www.google.com"通过以下代码
sigprocmask(SIG_SETMASK, &oldmask, NULL)
并发现错误,如"无效的URI:无法确定URI的格式。"
所以要知道基于缩短网址找到完整网址的任何技术。
代表。 google.com或www.google.com 预期输出:http://www.google.com或https://www.google.com
PS:我找到了基于缩短网址返回完整网址的在线网络工具(http://urlex.org/)
提前致谢。
答案 0 :(得分:2)
您可以使用UriBuilder
创建一个HTTP作为默认方案的URL:
UriBuilder urb = new UriBuilder("www.google.com");
Uri uri = urb.Uri;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.Method = WebRequestMethods.Http.Get;
string responseString;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
responseString = reader.ReadToEnd();
}
}
如果您的URL包含一个方案,它将使用该方案而不是默认的HTTP方案。我还使用using
来释放所有非托管资源。
答案 1 :(得分:1)
所以要知道基于缩短网址找到完整网址的任何技术。
我可能在这里误解了你的问题但你不能只是附加“http://”如果它丢失了吗?
string url = "www.google.com";
if (!url.StartsWith("http"))
url = $"http://{url}";
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(url));
request.Method = WebRequestMethods.Http.Get;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
String responseString = reader.ReadToEnd();
}
这基本上是当您未指定任何协议时Web浏览器所执行的操作。