gpt4 book ai didi

c# - 无法解析远程主机 :

转载 作者:行者123 更新时间:2023-11-30 22:41:57 25 4
gpt4 key购买 nike

我有以下 C# 程序:

using System;
using System.IO;
using System.Net;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string sourceUri = "http://tinyurl.com/22m56h9";

var request = WebRequest.Create(sourceUri);
try
{
//Edit: request = WebRequest.Create(sourceUri);
request.Method = "HEAD";

var response = request.GetResponse();
if (response != null)
{
Console.WriteLine(request.GetResponse().ResponseUri);
}
}
catch (Exception exception) {
Console.WriteLine(exception.Message);
}
Console.Read();
}
}
}

如果运行我的程序,sourceUri = "http://tinyurl.com/22m56h9"一切正常,我只得到 tinyurl 链接的目的地。
但是,如果运行我的程序时带有重定向到标记为恶意软件的站点的 tinyurl 链接,我的代码会抛出异常,提示 The remote host could not be resolved: '...'。我需要获取恶意软件链接的 uri,因为我想制作一个应用程序来搜索一些链接测试并返回它们是否是恶意软件,如果链接被缩小(上述情况),我需要知道在哪里正在重定向到。

所以我的问题是我在我的代码中做错了什么吗?或者是否有更好的方法来测试链接是否是重定向?提前致谢

最佳答案

与其捕获一般异常,不如 try catch WebException对象代替。像这样的东西:

try
{
request.Method = "HEAD";

var response = request.GetResponse();
if (response != null)
{
Console.WriteLine(request.GetResponse().ResponseUri);
}
}
catch (WebException webEx) {
// Now you can access webEx.Response object that contains more info on the server response
if(webEx.Status == WebExceptionStatus.ProtocolError) {
Console.WriteLine("Status Code : {0}", ((HttpWebResponse)webEx.Response).StatusCode);
Console.WriteLine("Status Description : {0}", ((HttpWebResponse)webEx.Response).StatusDescription);
}
}
catch (Exception exception) {
Console.WriteLine(exception.Message);
}

WebException 包含一个 Response您可以访问该对象以了解有关服务器实际返回内容的更多信息。

关于c# - 无法解析远程主机 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4645059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com