我想发布一个http请求,直到收到肯定的回复。如果我的笔记本电脑上的wifi打开,我得到一个肯定的响应,程序退出(正确)。如果我的笔记本电脑上的wifi最初关闭但在程序仍在尝试时打开,我没有得到肯定的响应,程序一直在尝试并失败直到它退出。当wifi打开时,不应该xmlhttp.status = 200吗?
xmlhttp = new XMLHTTPRequest();
xmlhttp.open("POST", url, true);
xmlhttp.setRequestHeader('User-Agent', 'XMLHTTP/1.0');
data = "Some text here";
xmlhttp.send(Base64.encode(data));
var timeout = 16;
var response = '';
for (var t = 0; t < timeout; t++) {
if (xmlhttp.ReadyState == 4) {
// If XMLHTTPRequest returns status code 200 (OK) and the response text contains REPORT_SUCCESS, it means that the report was successful.
if (xmlhttp.Status == 200 && xmlhttp.ResponseText.indexOf(REPORT_SUCCESS) != -1) {
return true;
} else {
if (xmlhttp.Status == 200) {
// if the XMLHTTPRequest returns status code 200 (ok) and the response text does not contain REPORT_SUCCESS
break;
} else {
//try again
}
}
}
WScript.Sleep(1000);
}
答案 0 :(得分:1)
xmlhttp已完成请求,并在wifi关闭时收到错误响应。当wifi打开时,它不会重新尝试自动请求。它必须由你自己完成。
ReadyState = 4,状态!= 200始终在循环中。
如果xmlhttp开始发送请求并同时打开wifi,您的代码将会正常工作。