Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/01/2006, 05:33
kalandas
 
Fecha de Ingreso: enero-2006
Ubicación: Madrid
Mensajes: 148
Antigüedad: 18 años, 10 meses
Puntos: 0
Verificar si un link esta roto

Hola a todos, tengo unos problemas con un programa que he hecho en asp que me verifica si un link esta roto o no, y es que me da cuando verifico un número elevado de links(a partir de 130 me empieza a dar problemas) un error de Timed Out.Al principio pensé en poner a server.ScriptTimeout un valor muy alto, para que dejase de darme el problema, y algo solucionó pero me sigue dando el mismo problema.
El 2º error que me da es cuando el link está roto pero el error en vez de ser Not Found(404) me da al abrir el link el error "No se puede mostrar la página", y el programa casca diciendome :
Tipo de error:
msxml3.dll (0x80072EE7)
The server name or address could not be resolved.
3º que diferecia hay entre una página con bad request o que este ok, porque los links que están correctos me pone OK, pero otros que supuestamente tambien estan correctos, porque al abrirlos te aparece la página, me devuelve BAD REQUEST y no se porqu es.
Bueno espero que alguien pueda ayudarme muchas gracias de todas formas hasta luego.

Por cierto el programa es este, que casi se me olvida:

Código:
<%

Set miconexion=Server.CreateObject("ADOdb.Connection")
		
			miconexion.Open "Mibasededatos"
	
			Set rs=miconexion.execute("select * from links")	
				
			cont_ofertas=0
			cont_caducadas=0
			cont_ok=0
		
			while not rs.eof
				link=rs("link")
				
				if len(link)>0  then
					cont_ofertas=cont_ofertas+1
					%><tr><td><a href="<%=link%>" target="_blank"><%response.Write(link)%></a></td>
						  <td align="center"><%Response.write(GetHTML(link,cont_caducada,cont_ok))%></td>
					 </tr><%
				end if
				rs.movenext
			wend
			%>
			</table>
			<table>
				<tr>
					<td><%response.Write("El numero de links revisados son " & cont_ofertas)%></td>
				</tr>
				<tr>
					<td>
						<%response.Write("El numero de links caducados son: " & cont_caducadas)%>
					</td>
				</tr>
				<tr>
					<td>
						<%response.Write("El numero de links correctos son: " & cont_ok)%>
					</td>
				</tr>
			</table>
<%

Function GetHTML(strURL,cont_caducada,cont_ok)
	Dim objXMLHTTP, strReturn, strHTML
	Set objXMLHTTP = SErver.CreateObject("MSXML2.ServerXMLHTTP")
	objXMLHTTP.Open "GET", strURL, False
	objXMLHTTP.setRequestHeader "Accept-Language", "sp"
	objXMLHTTP.setRequestHeader "Pragma", "no-cache"
	objXMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
	objXMLHTTP.SetRequestHeader "Content-Type", "text/html"
	objXMLHTTP.SetRequestHeader "charset", "iso-8859-1"
	objXMLHTTP.Send
	if objXMLHTTP.statusText<>"OK" and objXMLHTTP.statusText<>"Found" then
		if objXMLHTTP.statusText="Not Found" or objXMLHTTP.statusText="Object Not Found" then
			cont_caducadas=cont_caducadas+1
			response.Write (objXMLHTTP.statustext)
		end if
	else
		cont_ok=cont_ok+1
		Response.write objXMLHTTP.statustext
	end if
	Set objXMLHTTP = Nothing
End Function

Última edición por kalandas; 30/01/2006 a las 06:19