表单提交 - Windows脚本宿主

时间:2013-10-24 12:25:56

标签: javascript jscript wsh

这对你来说很容易。也许不适合我...

我只需要从脚本重启我的调制解调器。我尝试这样做的方式与我用来重启路由器的方式相同。这是使用以下脚本模拟HTTP标头并从Windows脚本宿主(wscript)执行它:

URL_Submit="http://192.168.100.1/goform/gscan";
ContentTypeSubmit="application/x-www-form-urlencoded";
ContentLengthSubmit="24";
POSTDATASubmit="SADownStartingFrequency=";

var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");

function send(URL_POST,CT,CL,CD)
{  
  WinHttpReq.open("POST", URL_POST, true);
  WinHttpReq.SetRequestHeader("Content-Type", CT);
  WinHttpReq.SetRequestHeader("Content-Length", CL);
  WinHttpReq.send(CD);
};

function Submit()
{
    send(URL_Submit,ContentTypeSubmit,ContentLengthSubmit,POSTDATASubmit)
};

Submit();

类似的脚本适用于我的路由器,但这个不适用于我的调制解调器。我实际用于重新启动调制解调器的常规方法是从其管理面板,提交以下表单:

<html>
   ...
<body>
   ... 
<form action="http://192.168.100.1/goform/gscan" method="POST">
<input name="SADownStartingFrequency"> <input value="Click here to restart" type="submit">
</form>
   ...
</body>
</html>

注意:表格可以空白提交。填写信息并不是强制性的。

使用任何ECMAScript实现模拟此表单提交以便能够从Windows脚本宿主执行它的正确方法是什么?

提前感谢您的时间。

Denik。

编辑:

我找到了一种方法,如下所示:

var doc = new ActiveXObject("htmlfile");
var form = doc.createElement("form");
var input = doc.createElement("input");

form.name = "gscan";
form.method = "POST";
form.action = "http://192.168.100.1/goform/gscan";

input.type = "text";
input.name = "SADownStartingFrequency";

doc.appendChild(form);
form.appendChild(input);

form.submit();

但我仍然遇到的问题是,每次提交表单时,都会打开一个Internet Explorer窗口,正如我在我的问题中所说,我需要在没有打开窗口的情况下在Windows脚本宿主上运行该脚本。我想在后台运行它。

如果有人知道其他任何方式,请告诉我。感谢。

1 个答案:

答案 0 :(得分:0)

这是我发现的一种方式。它适用于我:

'modem_reboot.vbs
'For Cisco DPC2203 Modem rebooting

dim Browser
set Browser = WScript.CreateObject("InternetExplorer.Application")
Browser.Visible = false
Browser.Navigate "about:blank"
Browser.Document.Body.InnerHTML = _
"<form name=""reboot"" action=""http://192.168.100.1/goform/gscan"" method=""POST"">" + _
"<input name=""SADownStartingFrequency""> <input value=""Click here to restart"" type=""submit"">" + _
"</form>"

Browser.Document.reboot.Submit()

WScript.Sleep 5000

Browser.Quit