webForumDet fria alternativet

XMLHTTP och filer

11 svar · 465 visningar · startad av nicclas

nicclasMedlem sedan feb. 20001 050 inlägg
#1

Problemet jag har är att jag vill ladda en textfil från en annan server och spara den lokal. Till detta har jag tänkt mig följande:

Tar bort denna (det var mest junk ;). En bättre version finns längre ner!

Iden är att man bara skall ladda från den externa servern (https://www.nic-sys.se) maximalt var tionde minut, de andra gångerna skall filen "nicnews.js" laddas från servern lokalt.

Ovanstående kod verkar dock inte fungera (webbsidan slutar "aldrig" ladda, inga felmeddanden syns). Vad är fel? Jag har redan en fil som heter nicnews.js vars "alla" rättigheter är satta...

Servern kör IIS5.

PS Detta är mitt absolut första ASP-script ;)

/nicclas - http://mina.nyhetsrubriker.net

@ndersMedlem sedan juni 200032 969 inlägg
#2

Du råkar inte köra någon typ av Nortonprodukt på maskinen, exempelvis AV?

nicclasMedlem sedan feb. 20001 050 inlägg
#3

Nope, det tror jag inte. Sidan ovan ligger på ett webbhotel.

@ndersMedlem sedan juni 200032 969 inlägg
#4

Om du kommenterar bort raderna som har med FSO att göra, laddas sidan klart då?

nicclasMedlem sedan feb. 20001 050 inlägg
#5

Tyvärr kan jag inte prova det just nu, utan först typ nästa vecka :( Du ser alltså inte något i koden som är uppenbart fel?

Bäst vore ju om någon ville prova koden på sin egen server :) :) :) Snälla...

BenganMedlem sedan juni 2000690 inlägg
#6

Är du säker på att XMLHTTP funkar på servern, de har ingen brandvägg eller liknande som kan blockera?

Vet inte hur XMLHTTP funkar men jag fick själv problem ett tag med både en HTTP komponent i ASP och hämtning med PHP när webbhotellet bytte brandvägg. De fick öppna för port 80 utåt sen funkade det såklart igen.

Förresten, går det att ställa timeout för XMLHTTP? Hur hanterar den nätverksproblem?

nicclasMedlem sedan feb. 20001 050 inlägg
#7

Är du säker på att XMLHTTP funkar på servern, de har ingen brandvägg eller liknande som kan blockera?

Scriptet körs på server hos digikom.net (det är väl samma som du Bengan kör på!?)

Timeout och närverksproblem är inte mina problem ;) men det finns antagligen inga möjligheter att själv ställa det. Hoppas dock att koden kommer att forstätta köra, även vid långsam anslutning (därav kollen om mer än 100 tecken!).

Ah, Digikom kanske har AspTear eller nåt installerat...

nicclasMedlem sedan feb. 20001 050 inlägg
#8

Ja ja det funkar på brinkster i alla fall :) http://www30.brinkster.com/nicclas/

BenganMedlem sedan juni 2000690 inlägg
#9

Testa då om DynuHTTP finns installerat, den är mycket stabilare än ASPTear (digikom har bara gratis versionen av den).

På min server funkar DynuHTTP med:
Set objTear = Server.CreateObject("DynuHttp.Http")

Men jag tror det är en gammal version så kan hända de har den reggad annorlunda på andra servrar.

Prova:

Set objTear = Server.CreateObject("DynuHttp.Http")

objTear.URL = "fil.htm"

strRetval = objTear.GetURL()

Hehe, jag brukar också köra liknande koll: If Err.Number = 0 AND Len(strRetval) > 100 Then :)

ops, sen som vanligt, du har redan löst det ser jag ;)

nicclasMedlem sedan feb. 20001 050 inlägg
#10

Nja, löst och löst. Webbsidan på Digikom är inte min, så det är lite struligt att få det rätt där. Men kanske kan Digikom komma med lite tips om vad de tycker är bäst :)

Tack i alla fall!

nicclasMedlem sedan feb. 20001 050 inlägg
#11

Jo, HTTPXML kan hantera socket-timeouts. Så här blev det:

<%
'
' (c) clas @ nyhetsrubriker.com
'
Dim nicTidb
nicTidb = CDate(Application("nicTidb"))
thepath=Server.MapPath("\nicclas\db\nicnewsb.js")
Response.Write "Path: " & thepath & "<br>"
If DateDiff("n",nicTidb,NOW) >= 15 Then
 Application.Lock
 Application("nicTidb") = NOW()
 Application.Unlock
 Response.Write "Read from exernal source...<br>"
 Set objHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")
 objHTTP.Open "GET", "http://www.nic-sys.se/news/allanyheter.php3?login=DITTLOGINHÄR", False
 objHTTP.Send

 'Uncomment next line if the scipt not is intended for brinkster-servers
 'On Error Resume Next 
  
 'Wait for up to 3 seconds if we've not gotten the data yet
 If objHTTP.readyState <> 4 then
  objHTTP.waitForResponse 3
 End If

 If (Err.Number = 0) AND (objHTTP.readyState = 4) AND (objHTTP.Status = 200) Then
  strHTML = objHTTP.ResponseText
  Response.Write "Write new js-file...<br>"
  Set ObjMyFile = CreateObject("Scripting.FileSystemObject")
  Set WriteMyFile = ObjMyFile.OpenTextFile(thepath,2,true)
  WriteMyFile.WriteLine(strHTML)
  WriteMyFile.Close
  Response.Write "New js-file written.<br>"
 Else
  Response.Write "Read from external source failed...<br>"
  objHTTP.Abort
 End If
Else
 Response.Write "Using cached js-file.<br>"
End If
%>

<html>
<head>
<script>var nyhet=new Array();</script> 
<script src="\db\nicnewsb.js"></script> 

<style>
a {text-decoration: none;}
</style>
</head>
<body>
<table width=350">
<tr>
<td>
<font face="Verdana, Helvetica" size=3>
<script>document.write(nyhet[1]);</script><br>
<script>document.write(nyhet[2]);</script><br>
<script>document.write(nyhet[3]);</script><br>
<script>document.write(nyhet[4]);</script><br>
<script>document.write(nyhet[5]);</script><br>
<script>document.write(nyhet[6]);</script><br>
</font>
<hr>
Nyheter via <a href="http://www.nyhetsrubriker.com">Nyhetsrubriker.com</a>
</td>
</tr>
</table>
</body> 
</html>

Koden laddar rubriker från nic-sys.se/news/allanyheter.php3 maximalt var 15:e minut. Om servern nic-sys.se är långsam (dvs det tar mer än 3 sek att hämta data) så används de gamla rubrikerna ytterligare 15 minuter.

ASP är lite cool i alla fall ;) (Koden kräver scriptengine-versionen som finns i IIS5 och funkar inte med ChiliAsp)

FRÅGA: Jag kör detta script på brinkster ( http://www30.brinkster.com/nicclas/demo.asp ) och filen som skrivs, "nicnewsb.js", måste ligga i \db\-katalogen, vilket är den katalog som man skall ha sina access-databaser i. Vad är speciellt med denna katalog? (Är andra rättigheter sätta på den?)

/nicclas - http://mina.nyhetsrubriker.net

BenganMedlem sedan juni 2000690 inlägg
#12

Mycket intressant faktiskt :)

Synd att inte scriptmotorn hade det här från början, då hade man sluppit allt tjafs om komponenter för HTTP funktioner. Jag provade XMLHTTP för nåt år sen men då var det väldigt beta aktigt, nu verkar det ju perfekt.

Jo, för att IUSER skall kunna skriva till filer i IIS så måste andra rättigheter sättas. De flesta "riktiga" webbhotell har funktioner för det i domänens kontrollpanel men brinkster har väl antagligen bara det i en standardmapp.

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