webForumDet fria alternativet

xmlhttp + 'sidan hittas ej'

ASP

11 svar · 417 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Frågan#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>
Medlem 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å.

Medlem sedan maj 200010 687 inlägg
#3

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

Medlem 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?

Medlem sedan feb. 20011 198 inlägg
#5

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

Medlem 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
Medlem 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!

Medlem sedan maj 200010 687 inlägg
#8

Ah, Är det GoTo 0 det heter?

Gjorde koden i VB och översatte sen...

Medlem 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! :)

Medlem 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. :(

Medlem 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.

Medlem 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

263 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)