webForumDet fria alternativet

xmlhttp + 'sidan hittas ej'

11 svar · 417 visningar · startad av doggelito

doggelitoMedlem sedan juni 20003 076 inlägg
#1

Jag ska länka in en extern sida i min asp-sida och har följande fundering:
Kan man kolla med en kodsnutt om den extrena sidan verkligen finns?

Min tanke var att använda xmlhttp men det kanske går på nått annat sätt också, eller?
Jag behöver typ följande, fast fungerande:

<%
Dim objHTTP, framePage
Set objHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objHTTP.open "GET", "http://www.webforum.nu/default.asp", False
If isOpen(objHTTP) Then
     framePage = "http://www.webforum.nu/default.asp"
Else
     framePage = "/error.asp"
End If

Set objHTTP = Nothing
%>

<frameset rows="*" cols="200,*" framespacing="0" frameborder="no" border="0">
  <frame src="/menu.asp" name="menu" frameborder="no" noresize marginwidth="0" marginheight="0" id="menu">
  <frame src="<%= framePage %>" name="content" frameborder="no" noresize marginwidth="0" marginheight="0" id="content">
</frameset>
yohpopsMedlem sedan feb. 20011 198 inlägg
#2

Du kan kolla objHTTP.status eller vad propertien nu heter och om du får 404 så finns inte sidan.
Men du måste göra en objHTTP.send också.

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#3

Du kan ju kolla om propertyn .status är 404. Funkar dock inte om domänen inte finns.

doggelitoMedlem sedan juni 20003 076 inlägg
#4

.status verkar ju funka :)
men vad skulle hända om servern ligger tillfälligt nere? funkar status 404 då eller?

yohpopsMedlem sedan feb. 20011 198 inlägg
#5

Nej då får du fel, err.number = -2146697211

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#6

Så här skulle man kunna skriva:

Dim objHTTP, sUrl, lError

sUrl = "http://www.fdkjsdlfsdjfks.com/"

On Error Resume Next
Set objHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objHTTP.Open "GET", sUrl, False
objHTTP.setRequestHeader "Content-type", "text/html"
objHTTP.send
If Err.Number Then
	lError = Err.Number
ElseIf objHTTP.Status <> 200 Then
	lError = objHTTP.Status
End If
Set objHTTP = Nothing
On Error GoTo 1

If lError Then
	Response.Write "Fel!"
Else
	Response.Write "Funka!"
End If
doggelitoMedlem sedan juni 20003 076 inlägg
#7

Visst sjutton kan man det! :bire
OBS! Förutom raden: On Error GoTo 1 som inte går med vb-script!

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#8

Ah, Är det GoTo 0 det heter?

Gjorde koden i VB och översatte sen...

doggelitoMedlem sedan juni 20003 076 inlägg
#9

Erik Juhlin skrev:

Ah, Är det GoTo 0 det heter?

Själv använder jag sällan error-objektet så jag är lite osäker på hur det kan användas.
Men svar ja: GoTo 0 kan man skriva! :)

doggelitoMedlem sedan juni 20003 076 inlägg
#10

Koden är inte helt stabil, funkar inte på följande punkter:
1. På en .nu adress så får man en redirect till nunames om domänen inte finns.
2. Stoppar man domänen i iis:en så får man en redirect till att sidan är under uppbyggnad.

Eftersom man får redirects så tror koden att domänen finns. :(

SannyWMedlem sedan jan. 2003438 inlägg
#11

Nu är man i farten och försöker lägga till en följdfråga på en gammal tråd, vi får väl se hur det går :)

Jo, om jag förstår det hela rätt så kollar man av om felsidan laddas.

Har två frågor:

  1. Går det att tidsbestämma hur långtid laddningen får lov att ta?

  2. Går det att undersöka koden som man hämtar så att man kan gardera sig mot t ex databas fel på sidan man hämtar informationen från? Typ när en databas är upptagen för nedladdning eller bara upptagen.

Hoppas det går att förstå vad jag menar, tack på förhand.

yohpopsMedlem sedan feb. 20011 198 inlägg
#12

Om du använder serverxmlhttp istället för xmlhttp så kan du använda setTimeouts.

setTimeouts resolveTimeout,connectTimeout,sendTimeout,receiveTimeout

För att kolla koden använder du responseBody,Stream,Text,XML

139 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)