SilvioFMedlem sedan juni 2000547 inlägg Finns det något sätt att, genom ASP, kontrollera om en viss URL, t.ex http://www.kalleshemsida.nu, verkligen finns?
Anledningen är att jag vill förhindra att folk lägger in idiotiska texter och länkar som inte fungerar i ett länk-register som jag håller på att bygga till en sida.
Om det är någon som har lite exempelkod eller en länk till något ställe där man kan läsa om hur man gör så är jag väldigt tacksam.
SPiNMedlem sedan mars 20007 896 inlägg Genom att använda XMLHTTP borde det fungera smidigt:
Dim objXMLHTTP
set objXMLHTTP = Server.CreateObject( "MSXML2.XMLHTTP" )
objXMLHTTP.Open "GET", "http://www.kalleshemsida.nu", False
objXMLHTTP.Send
Dim sReturned
sReturned = objXMLHTTP.getAllResponseHeaders()
set objXMLHTTP = Nothing
If InStr( sReturned, "OK" ) > 0 Then
' Fanns
Else
' Fanns inte
End If
Eller något liknande. ;)
SilvioFMedlem sedan juni 2000547 inlägg Hmm... Den där funktionen returnerar felmeddelandet "0x800C0005: URL Resouce not found" om sidan inte finns, vilket i och för sig stämmer, men den hoppar in i "Finns inte"-delen at kontrollen om sidan finns.
SPiNMedlem sedan mars 20007 896 inlägg OK, då var det ju inte alls som jag trodde att det skulle fungera... :l
ViktorMedlem sedan aug. 20021 752 inlägg Kanske fungerar om man lägger till en "On Error Goto XX" eller "On Error Resume Next"?
/Viktor
trexterMedlem sedan mars 20021 889 inlägg On Error Resume Next
Dim objXMLHTTP
set objXMLHTTP = Server.CreateObject( "MSXML2.XMLHTTP" )
objXMLHTTP.Open "GET", "http://www.kalleshemsida.nu", False
objXMLHTTP.Send
Dim sReturned
sReturned = objXMLHTTP.getAllResponseHeaders()
set objXMLHTTP = Nothing
If Err.Number <> "" Then
'Fel inträffade
Else
'Fel inträffade förhoppningsvis inte
End If
Err.Clear
On Error GoTo 0
:)
CoreXMedlem sedan sep. 2001105 inlägg Liten korrigering...
If Err.Number <> "0" Then
'Fel inträffade
Else
'Fel inträffade förhoppningsvis inte
End If
@ndersMedlem sedan juni 200032 969 inlägg Då passar väl jag på att korrigera korrigeringen. ;)
Err.Number returnerar alltid ett tal.
If Err.Number <> 0 Then
Mvh,
nikoMedlem sedan juni 20022 599 inlägg Innan man ger sig på en sån här sak så ska man nog tänka igenom vad som menas med att en URL "finns".
Om man funderar efter en stund så finns det rätt många fall att ta hänsyn till och hantera.
1. Vi får ett DNS-fel då vi försöker resolva hostnamnet. Är detta temporärt eller finns sidan inte?
2. Servern svarar inte alls på port 80. Är detta temporärt eller finns sidan inte?
3. Servern svarar och returnerar statuskod 404. Saken är klar sidan finns inte.
4. Servern svarar och returnerar en annan statuskod tex 500 (Server Error). Är detta temporärt eller finns sidan inte?
5. Servern svarar och returnerar en statuskod i intervallet 300-399 (Object moved). Vad gör vi då? Ska vi följa redirecten och kolla om den sidan finns? Ska vi byta URL:en i databasen?
6. Servern svarar och returnerar statuskod 200 OK. Finns sidan helt säkert då? Nej inte alls, det kan vara en serverspecifik 404-sida. Hur gör vi då? Ska vi scanna HTML-koden och försöka gissa vad där står? Om det är en bild? Ska vi försöka läsa vad det står på bilden?
osv ..
Anledningen till att koden ovan inte fungerar är nog att getAllResponseHeaders inte innehåller serverns statuskod borde vara bättre att titta på objXMLHTTP.Status