我正在尝试使用AHK执行Web请求,该请求将在1秒后超时。在某个键组合之后将调用此脚本。
对于我的智能手机,我有一个小型HTML应用程序,使用AJAX进行调用,并在1秒后正常超时。
这是AHK脚本:
SendCode(code) {
HttpObj := ComObjCreate("WinHttp.WinHttpRequest.5.1")
try {
HttpObj.Open("GET","http://192.168.1.120/?" + code)
HttpObj.SetTimeouts(1000,1000,1000,1000)
HttpObj.Send()
} catch e {
MsgBox, Error executing code: %code%
}
ObjRelease(HttpObj)
}
SendCode(24)
SendCode(26)
由于我对C#更熟练,我也尝试使用.NET控制台应用程序:
static void Main(string[] args)
{
const string url = "http://192.168.1.121/?24";
const int timeout = 1000;
double stopWatch;
dynamic HttpObj = Activator.CreateInstance(Type.GetTypeFromProgID("WinHttp.WinHttpRequest.5.1"));
HttpObj.Open("GET", url);
HttpObj.SetTimeouts(timeout, timeout, timeout, timeout);
stopWatch = DateTime.Now.TimeOfDay.TotalMilliseconds;
try
{
HttpObj.Send();
}
catch
{
}
stopWatch = DateTime.Now.TimeOfDay.TotalMilliseconds - stopWatch;
Console.WriteLine(stopWatch);
Console.Read();
}
此输出
4029,00729998946
当我没有指定SetTimeouts时,超时发生在30秒之后。无论如何使用WinHttpRequest做到这一点?
使用.NET WebClient类我也可以设置1s的超时而没有问题。
由于