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...
Ä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?
Ä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...
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 :)
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?)
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.
143 ms totalt · 3 externa anrop · v20260731065814-full.b746b907