如何使用小值的WinHttpRequest和SetTimeouts?

时间:2015-06-01 19:45:57

标签: c# winhttprequest

我正在尝试使用AHK执行Web请求,该请求将在1秒后超时。在某个键组合之后将调用此脚本。

对于我的智能手机,我有一个小型HTML应用程序,使用AJAX进行调用,并在1秒后正常超时。

这是AH​​K脚本:

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的超时而没有问题。

由于

0 个答案:

没有答案