我正在尝试使用 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 类,我还可以将超时设置为 1 秒而不会出现问题。
谢谢