每天監測網站是否正常運行,之前是一個一個打開,現在寫一個程序來監測。
文件xml格式:其中encoding=”GB2312”,GB2312是一種可以識別中文的編碼方式,不然會報如下錯誤
下圖是正確的xml格式
字段名 | 說明 |
---|---|
Continue | 指示客戶端可能繼續其請求。 |
OK | 指示請求成功,且請求的信息包含在響應中。 這是最常接收的狀態代碼。 |
Created | 指示請求導致在響應被發送前創建新資源 |
Accepted | 指示請求已被接受做進一步處理 |
UsePRoxy | 指示請求應使用位于 Location 頭中指定的URI 的代理服務器 |
BadRequest | 如果沒有其他適用的錯誤,或者不知道準確的錯誤或錯誤沒有自己的錯誤代碼,則發送 |
此外還要很多的狀態碼,請查閱CSDN
try { HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); if (resp.StatusCode == HttpStatusCode.OK) { resp.Close(); return "程序運行中......"; } } catch (WebException e) { return e.ToString() ; } return "程序已終止";在運行時會出現如下錯誤代碼:401
在網上找了一下解決方案,原因是:請求第一個IP是本地IP,需要用戶認證才能登錄。解決方法如下,將用戶電腦登錄名和密碼,賦值給NetworkCredential。
NetworkCredential d = new NetworkCredential("USERNAME", "passWord");// USERNAME電腦登錄名,password登錄密碼 req.Credentials = d;完整代碼如下:
protected void Page_Load(object sender, EventArgs e) { XmlDocument dom = new XmlDocument(); dom.Load(@"D:/ServerList.xml"); foreach (XmlElement ServerC in dom.DocumentElement.ChildNodes) { string ID = ServerC.SelectSingleNode("ID").InnerText; string Name = ServerC.SelectSingleNode("Name").InnerText; string IP = ServerC.SelectSingleNode("IP").InnerText; HttpContext.Current.Response.Write(ID + "、<a href=" + IP + " target='_blank'>" + Name + "</a>" + "|" + CheckUrlVisit(ServerC.SelectSingleNode("IP").InnerText) + " <br>"); } } public string CheckUrlVisit(string url) { try { HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); NetworkCredential d = new NetworkCredential("USERNAME", "password");//遠程服務器返回錯誤 (401) 未經授權 req.Credentials = d; HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); if (resp.StatusCode == HttpStatusCode.OK) { resp.Close(); return "程序運行中......"; } } catch (WebException e) { return e.ToString(); } return "程序已終止"; }運行結果如下:
新聞熱點
疑難解答