Avatar billede suntj Nybegynder
21. juli 2002 - 13:27 Der er 9 kommentarer og
1 løsning

Læs fil fra HTTP

Hej

Jeg vil gerne kunne læse en fil fra HTTP i asp. Jeg har kigget lidt på FSO, men jeg kunne ikke finde noget om det.

I php kan man bare skrive:

readfile("http://www.mit-domaene.dk/fil.php?id=3&name=dummy");

Jeg mangler bare en måde at gøre det på i asp!

Sune
Avatar billede Søren Bech Morsing Praktikant
21. juli 2002 - 13:35 #1
jeg tror du leder efter ASPHTTP fra www.serverobjects.com -
Avatar billede cordack Nybegynder
21. juli 2002 - 13:37 #2
Dim fil, fso, line

Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set fil = fso.OpenTextFile(" ---filens navn og placering--- ")

Do While not fil.AtEndOfStream
    line = fil.ReadLine
    --- hvad du nu liv gøre ---
    End If
Loop

fil.Close
Avatar billede suntj Nybegynder
21. juli 2002 - 13:46 #3
Det findes desværre ikke hos Azero som jeg bruger :-(
Avatar billede suntj Nybegynder
21. juli 2002 - 13:49 #4
Hov. Der var jeg vidst lidt for hurtig.

-> sbk. Jeg kiggede på www.serverobjects.com, og de har et objekt der hedder AspHTTP, som ser ud til at kunne bruges, men det er desværre ikke installeret hos Azero.

-> cordack. Jeg prøver lige
Avatar billede Søren Bech Morsing Praktikant
21. juli 2002 - 13:59 #5
det cordack skriver kan ikke bruges til at retrieve informationer fra en "fremmed" html side, hvilket er det jeg går ud fra du vil??
Avatar billede suntj Nybegynder
21. juli 2002 - 14:08 #6
Ja. Det er det jeg vil. Det ser heller ikke ud til at det virker :-(
(
Avatar billede loukas Mester
21. juli 2002 - 23:29 #7
Jeg har prøvet den her hos azero, hvor det virkede ;-)

<%

' *** Get a file through HTTP ( GetHttp("www.azero.dk/forside.asp") )
Function GetHttp(strUrl)

  ' Reserve variables
  Dim strHost
 
  ' Start error handling
  On Error Resume Next

  ' Strip off http://
  If LCase(Left(strUrl, 7)) = "http://" Then
    strUrl = Right(strUrl, Len(strUrl) - 7)
  End If
 
  ' Split server address and filename
  If InStr(strUrl, "/") > 0 Then
    strHost = Left(strUrl, InStr(strUrl, "/") - 1 )
    strUrl = Right(strUrl, (Len(strUrl) - InStr(strUrl, "/")) + 1 )
  End If
 
  ' Add port if not included
  If InStr(strHost, ":") = 0 Then
    strHost = strHost & ":80"
  End If
 
  ' Create object
  set Socket = server.CreateObject("Socket.TCP")

  ' Set hostadress
  socket.Host = strHost

  ' Set timeout to 5 seconds
  Socket.TimeOut = 5000

  ' Open connection to host
  Socket.Open

  ' Send getline for content
  Socket.SendLine("GET /" & strUrl & " HTTP/1.0" & Chr(13) & Chr(10) & "Host: " & strHost & Chr(13) & Chr(10))

  ' Wait until content is recieved
  Socket.WaitForDisconnect()

  ' Insert data into function
  GetHttp = Socket.Buffer

  ' Close object
  Socket.Close()

  ' Error
  If Err.Number <> 0 Then
      Response.Write Err& ": " & Err.Description
      Response.Write "<br>Host:[" & strHost & "]<br>Url:[" & strUrl & "]"
      Exit function
  End If
  On Error Goto 0

End Function

' *** Get content within a tag (strS) ( GetHttpData("www.azero.dk/forside.asp", "body") )
Function GetHttpData(strUrl,strS)
  Dim strT
  strT = GetHttp(strUrl)
  strT = Mid(strT, InStr(LCase(strT), "<" & LCase(strS)))
  strT = Mid(strT, InStr(LCase(strT), ">") + 1)
  strT = Left(strT, InStrRev(LCase(strT), "</" & LCase(strS)) - 1)
  GetHttpData = strT
End Function

' *** Get the header from a file through HTTP ( GetHttpHeader("www.azero.dk/forside.asp") )
Function GetHttpHeader(strUrl)
  Dim strT
  strT = GetHttp(strUrl)
  strT = Mid(strT, 1, InStr(strT, Chr(13) & Chr(10) & Chr(13) & Chr(10)))
  GetHttpHeader = strT
End Function

'''''''''''''''finder beskrivelse''''''''''''''''''''''''''



strHTML = GetHttpData("eksperten.dk/", "head")


Dim strHTML, objRegExp, objMatch

strHTML = strHTML & "<title>Testside</title>" & vbCRLF
strHTML = strHTML & "<meta name=""description"" content=""Description content"">" & vbCRLF
strHTML = strHTML & "<meta name=""ignore"" content=""Ignore content"">" & vbCRLF
strHTML = strHTML & "<meta name=""keywords"" content=""Keywords content"">"

Set objRegExp = New RegExp
 
With objRegExp
    .Pattern = "<meta\s+name=""(description|keywords)""\s+content=""([^""]*)""\s*>"
    .IgnoreCase = True
    .Global = True
End With

For Each objMatch In objRegExp.Execute(strHTML)
    Response.Write objMatch.SubMatches(1) & "<br>"
Next

Set objMatch = Nothing
Set objRegExp = Nothing


%>
(objMatch.SubMatches(0) & "=" &
Avatar billede loukas Mester
21. juli 2002 - 23:37 #8
Hov, du fik lidt for meget med :-)
Jeg har forsøgt at skille informationer i <HEAD></HEAD>
Men det kan du vel bare klippe fra ??
Avatar billede suntj Nybegynder
22. juli 2002 - 18:44 #9
Helt perfekft. Jeg skulle lige rette lidt i det, da jeg skal inkludere en fil der ikke indholder noget bestemt start og slut tag, så jeg kunne ikke bruge din GetHttpData function.

Men det fungere lige som det skal. Mange tak :-)
Avatar billede loukas Mester
25. juli 2002 - 09:30 #10
det var så lidt..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester