2

我正在尝试使用 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 秒而不会出现问题。

谢谢

4

0 回答 0