Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使HttpWebRequest.GetResponse()在连接失败时返回一个值_C#_Unity3d_Web_Time_Httpwebrequest - Fatal编程技术网

C# 使HttpWebRequest.GetResponse()在连接失败时返回一个值

C# 使HttpWebRequest.GetResponse()在连接失败时返回一个值,c#,unity3d,web,time,httpwebrequest,C#,Unity3d,Web,Time,Httpwebrequest,我正在开发一个关于Unity的游戏,需要每2小时重置一次玩家寿命,为了避免作弊,我正在尝试使用互联网时间。为此,我在C#上做了一个简单的方法,从microsoft.com获取日期时间。问题是,有时连接失败,我希望在出现这种情况时返回bool,这样我就可以立即获取System.DateTime.Now并在连接可用时再次检查Internet时间。我试过一些东西,但都没用。以下是我正在使用的代码: public DateTime GetInternetTime() { var myHttpWe

我正在开发一个关于Unity的游戏,需要每2小时重置一次玩家寿命,为了避免作弊,我正在尝试使用互联网时间。为此,我在C#上做了一个简单的方法,从microsoft.com获取日期时间。问题是,有时连接失败,我希望在出现这种情况时返回bool,这样我就可以立即获取System.DateTime.Now并在连接可用时再次检查Internet时间。我试过一些东西,但都没用。以下是我正在使用的代码:

public DateTime GetInternetTime()
{
    var myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.microsoft.com");
    myHttpWebRequest.Timeout = 5000;
    myHttpWebRequest.ReadWriteTimeout = 5000;
    var response = myHttpWebRequest.GetResponse();

    if (response == null)
    {
        dateTime = DateTime.Now;
        connecionFailed = true;
    }
    string todaysDates = response.Headers["date"];
    dateTime = DateTime.ParseExact(todaysDates, "ddd, dd MMM yyyy HH:mm:ss 'GMT'", CultureInfo.InvariantCulture.DateTimeFormat, DateTimeStyles.AssumeUniversal);
    connecionFailed = false;
    return dateTime;
}

请帮忙!我真的被困在这上面了

GetResponse在发生错误时引发异常。例如,如果无法解析主机。你所需要的就是抓住它,然后采取适当的行动

在下面的代码中,我处理WebException,但在此方法期间可能会发生一些其他异常。所以您可以改为使用常规异常类

public DateTime GetInternetTime()
{
    var myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.microsoft.com");
    myHttpWebRequest.Timeout = 5000;
    myHttpWebRequest.ReadWriteTimeout = 5000;

    try
    {
        var response = myHttpWebRequest.GetResponse();
        string todaysDates = response.Headers["date"];
        dateTime = DateTime.ParseExact(todaysDates, "ddd, dd MMM yyyy HH:mm:ss 'GMT'", CultureInfo.InvariantCulture.DateTimeFormat, DateTimeStyles.AssumeUniversal);
        connectionFailed = false;
    } catch(WebException)
    {
        connectionFailed = true;
        dateTime = DateTime.Now;
    }

    return dateTime;
}

请解释“连接失败”-您收到的确切错误消息是什么,以及在哪行代码上。这是一款Android游戏,有时用户无法访问互联网,或者只是超时。发生这种情况时,控制台会抛出:WebException:请求超时System.net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)。我想知道的是,当用户无法访问internet或internet超时时,如何使用{connectionFailed=true}。