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