当连接失败时,使httpwebrequest.getResponse()返回值



我正在开发一个关于Unity的游戏,需要每2小时重置玩家的生命,并且为了避免作弊,我正在尝试使用互联网时间。为此,我在C#上做了一种简单的方法,可以从Microsoft.com获取DateTime。问题是有时连接失败了,我想在发生这种情况时返回一个布尔,因此我可以获得系统。dateTime.dateTime.dateethe,并在连接可用后立即再次检查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;
}

相关内容

  • 没有找到相关文章

最新更新