我正在Unity上开发一款游戏,每2小时需要重置玩家的生命,并避免作弊我试图使用互联网时间。为此,我在C#上使用了一个简单的方法从microsoft.com获取DateTime。问题是,有时连接失败,我希望它发生这种情况时返回一个布尔,所以我可以得到System.DateTime.Now,并尽快连接可用时再次检查Internet时间。我尝试了一些东西,但没有奏效。这里是我使用的代码:当连接失败时,让HttpWebRequest.GetResponse()返回一个值
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;
}
请帮忙!我真的被困在这!
请解释“连接失败” - 你得到了什么确切的错误信息,以及代码行。 – PhillipH
这是一款Android游戏,有时用户无法访问互联网,或者只是超时。发生这种情况时,控制台会抛出:WebException:请求超时System.net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)。我想知道的是当用户无法访问互联网或者超时时如何获取{connectionFailed = true}。 – ronald677br