Vbscript 如何处理XMLHTTP请求中未解析的服务器地址?
我使用以下代码检查RSS url是否在5秒钟内响应,这样我就可以使用RSS提要,但是当无法解析目标url时,尝试打开url会导致错误。除了Vbscript 如何处理XMLHTTP请求中未解析的服务器地址?,vbscript,msxml,Vbscript,Msxml,我使用以下代码检查RSS url是否在5秒钟内响应,这样我就可以使用RSS提要,但是当无法解析目标url时,尝试打开url会导致错误。除了waitForResponse之外,我还需要什么来处理这种情况 Set http = Server.CreateObject("MSXML2.ServerXMLHTTP") http.open "POST", "https://persiadigest.com/fa/rss/8", T
waitForResponse
之外,我还需要什么来处理这种情况
Set http = Server.CreateObject("MSXML2.ServerXMLHTTP")
http.open "POST", "https://persiadigest.com/fa/rss/8", True
http.send
If http.waitForResponse(5) Then
body=http.responsetext
Else
response.write "Target url is not responding"
End If
Set http = Nothing
错误详细信息:
msxml3.dll错误“80072ee7”无法找到服务器名称或地址
决心
请尝试此示例,并告诉我结果:
Option Explicit
Dim Title : Title = "Get RSS FEED"
Dim ArrURL : ArrURL = Array("https://persiadigest.com/fa/rss/8","http://khabarfoori.com/rss/mm")
Dim URL
For Each URL in ArrURL
If CheckURL(URL) = "200" Then
MsgBox chr(34) & URL & chr(34) & " ==> is active"& vbCrLF &_
"Status : " & CheckURL(URL),vbInformation,Title
MsgBox GetDataFromURL(URL,"GET",""),vbInformation,Title
Else
MsgBox chr(34) & URL & chr(34) & " ==> is inactive" & vbCrLF &_
"Status : " & CheckURL(URL),vbCritical,Title
End if
Next
'---------------------------------------------------------------------------
Function GetDataFromURL(strURL, strMethod, strPostData)
Dim lngTimeout
Dim strUserAgentString
Dim intSslErrorIgnoreFlags
Dim blnEnableRedirects
Dim blnEnableHttpsToHttpRedirects
Dim strHostOverride
Dim strLogin
Dim strPassword
Dim strResponseText
Dim objWinHttp
lngTimeout = 59000
strUserAgentString = "http_requester/0.1"
intSslErrorIgnoreFlags = 13056 ' 13056: ignore all err, 0: accept no err
blnEnableRedirects = True
blnEnableHttpsToHttpRedirects = True
strHostOverride = ""
strLogin = ""
strPassword = ""
Set objWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
objWinHttp.SetTimeouts lngTimeout, lngTimeout, lngTimeout, lngTimeout
objWinHttp.Open strMethod, strURL
If strMethod = "POST" Then
objWinHttp.setRequestHeader "Content-type", _
"application/x-www-form-urlencoded"
End If
If strHostOverride <> "" Then
objWinHttp.SetRequestHeader "Host", strHostOverride
End If
objWinHttp.Option(0) = strUserAgentString
objWinHttp.Option(4) = intSslErrorIgnoreFlags
objWinHttp.Option(6) = blnEnableRedirects
objWinHttp.Option(12) = blnEnableHttpsToHttpRedirects
If (strLogin <> "") And (strPassword <> "") Then
objWinHttp.SetCredentials strLogin, strPassword, 0
End If
On Error Resume Next
objWinHttp.Send(strPostData)
If Err.Number = 0 Then
If objWinHttp.Status = "200" Then
GetDataFromURL = objWinHttp.ResponseText
Else
GetDataFromURL = "HTTP " & objWinHttp.Status & " " & _
objWinHttp.StatusText
End If
Else
GetDataFromURL = "Error " & Err.Number & " " & Err.Source & " " & _
Err.Description
End If
On Error GoTo 0
Set objWinHttp = Nothing
End Function
'---------------------------------------------------------------------------
Function CheckURL(vURL)
On Error Resume Next
Dim xhr
Set xhr = CreateObject("MSXML2.ServerXMLHTTP.3.0")
xhr.Open "HEAD", vURL, false
xhr.Send
If Err.Number = 0 Then
'MsgBox xhr.status
CheckURL = xhr.status
Else
CheckURL = Err.Description
End If
End Function
'---------------------------------------------------------------------------
选项显式
Dim Title:Title=“获取RSS源”
Dim ArrURL:ArrURL=数组(“https://persiadigest.com/fa/rss/8","http://khabarfoori.com/rss/mm")
暗URL
对于ArrURL中的每个URL
如果CheckURL(URL)=“200”,则
MsgBox chr(34)&URL&chr(34)&“==>处于活动状态”&vbCrLF&_
状态:&检查URL(URL)、信息、标题
MsgBox GetDataFromURL(URL,“GET”和“”),vbInformation,Title
其他的
MsgBox chr(34)&URL&chr(34)&“==>处于非活动状态”&vbCrLF&_
“状态:”&检查URL(URL)、vbCritical、标题
如果结束
下一个
'---------------------------------------------------------------------------
函数GetDataFromURL(strURL、strMethod、strPostData)
变暗时间
暗弦
暗淡的intSslErrorIgnoreFlags
Dim BlneEnabledRedirects
Dim blnEnableHttpsToHttpRedirects
暗色斜纹夜蛾
模糊结构
模糊字串
暗响应文本
Dim objWinHttp
lngTimeout=59000
strusAgentString=“http\u请求者/0.1”
intSslErrorIgnoreFlags=13056'13056:忽略所有错误,0:接受无错误
blnEnableRedirects=True
blnEnableHttpsToHttpRedirects=True
strHostOverride=“”
strLogin=“”
strPassword=“”
设置objWinHttp=CreateObject(“WinHttp.WinHttpRequest.5.1”)
objWinHttp.SetTimeouts lngTimeout,lngTimeout,lngTimeout,lngTimeout
objWinHttp.openstrmethod,strURL
如果strMethod=“POST”,则
objWinHttp.setRequestHeader“内容类型”_
“应用程序/x-www-form-urlencoded”
如果结束
如果是“strHostOverride”,则
objWinHttp.SetRequestHeader“主机”,strHostOverride
如果结束
objWinHttp.Option(0)=strUserAgentString
objWinHttp.Option(4)=intSslErrorIgnoreFlags
选项(6)=blnEnableRedirects
Option(12)=blnEnableHttpsToHttpRedirects
如果是(strLogin“”)和(strPassword“”),则
objWinHttp.SetCredentials strLogin,strPassword,0
如果结束
出错时继续下一步
发送(strPostData)
如果Err.Number=0,则
如果objWinHttp.Status=“200”,则
GetDataFromURL=objWinHttp.ResponseText
其他的
GetDataFromURL=“HTTP”&objWinHttp.Status&”_
objWinHttp.StatusText
如果结束
其他的
GetDataFromURL=“Error”&Err.Number&&Err.Source&&_
错误描述
如果结束
错误转到0
设置objWinHttp=Nothing
端函数
'---------------------------------------------------------------------------
函数检查URL(vURL)
出错时继续下一步
暗xhr
设置xhr=CreateObject(“MSXML2.ServerXMLHTTP.3.0”)
xhr.打开“头部”,vURL,false
发送
如果Err.Number=0,则
'MsgBox xhr.status
CheckURL=xhr.status
其他的
CheckURL=错误描述
如果结束
端函数
'---------------------------------------------------------------------------
一个忽略错误的简单函数可以工作
函数WaitIgnoreError(ByRef requestObject,超时)
出错时继续下一步
WaitIgnoreError=requestObject.WaitForResponse(超时)
端函数
用法:
如果WaitIgnoreError(http,5)那么
body=http.responsetext
其他的
response.write“目标url没有响应”
如果结束