/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
sockets (W3)
Fra : Jesper Stocholm


Dato : 01-04-01 13:01

Jeg har siddet - langt om længe - og leget lidt med W3 sockets. Jeg bruger
følgende kode:

Function GetHttp(strhost, strUrl)
set Socket = CreateObject("Socket.TCP")
socket.Host = strHost
Socket.TimeOut = 8000
Socket.Open
Socket.SendLine("GET /" & strUrl & " HTTP/1.0" & Chr(13) & Chr(10) &
"Host: " & strHost & Chr(13) & Chr(10))

Socket.WaitForDisconnect()
GetHttp = Socket.Buffer
Socket.Close()
End Function

msgbox GetHttp("www.pf.dk:80" , "person.xml")

Jeg kan se, at man kan udskifte "GET" med fx "HEAD", der så kun returnerer
headeren for filen. Er det muligt at bruge noget a'la "BODY" til at hente
selve indholdet af siden ? Når jeg afvikler mit script imod
www.pf.dk/person.xml (med BODY i stedet for GET), så får jeg følgende svar:

HTTP/1.1 501 Not implemented



--
Jeg kan afsløre, at der foretages flere tusinde port-scanninger hver
dag - bare i lille Danmark.
(lam gæst i HardDisken på P1)
- Jesper Stocholm - http://stocholm.dk

 
 
Jesper Stocholm (01-04-2001)
Kommentar
Fra : Jesper Stocholm


Dato : 01-04-01 13:33

usenet@stocholm.dk (Jesper Stocholm) wrote in
<Xns90768E650646Espamstocholmdk@192.38.208.81>:

>Jeg kan se, at man kan udskifte "GET" med fx "HEAD", der så kun
>returnerer headeren for filen. Er det muligt at bruge noget a'la "BODY"
>til at hente selve indholdet af siden ? Når jeg afvikler mit script imod
>www.pf.dk/person.xml (med BODY i stedet for GET), så får jeg følgende
>svar:
>
>HTTP/1.1 501 Not implemented
>

hmmm .. iflg http://sunsite.dk/RFC/rfc/rfc2616.html kan man åbenbart ikke
....

--
(Mary had a crypto key, she kept it in escrow, and everything that
Mary said, the Feds were sure to know.
(Sam Simpson, July 9, 1998)
- Jesper Stocholm - http://stocholm.dk

Thomas Jespersen (01-04-2001)
Kommentar
Fra : Thomas Jespersen


Dato : 01-04-01 13:46

usenet@stocholm.dk (Jesper Stocholm) writes:

> Jeg kan se, at man kan udskifte "GET" med fx "HEAD", der så kun returnerer
> headeren for filen. Er det muligt at bruge noget a'la "BODY" til at hente
> selve indholdet af siden ? Når jeg afvikler mit script imod

Det gør du med GET. Hvis du mener kun body uden headers giver det
faktisk ingen mening. Så får man ikke returneret en Content-length som
er nødvendig for at man kan hente resten af dokumentet, og uden en
Content-type er dit program overladt til selv at finde ud af hvilken
dokumenttype det drejer sig om.

Jesper Stocholm (01-04-2001)
Kommentar
Fra : Jesper Stocholm


Dato : 01-04-01 14:14

Thomas Jespersen <thomas@daimi.au.dk> wrote in
<y4n3dbsdbzu.fsf@sabretooth.daimi.au.dk>:

>usenet@stocholm.dk (Jesper Stocholm) writes:
>
>> Jeg kan se, at man kan udskifte "GET" med fx "HEAD", der så kun
>> returnerer headeren for filen. Er det muligt at bruge noget a'la
>> "BODY" til at hente selve indholdet af siden ? Når jeg afvikler mit
>> script imod
>
>Det gør du med GET. Hvis du mener kun body uden headers giver det
>faktisk ingen mening. Så får man ikke returneret en Content-length som
>er nødvendig for at man kan hente resten af dokumentet, og uden en
>Content-type er dit program overladt til selv at finde ud af hvilken
>dokumenttype det drejer sig om.
>

joeh ... det gør det faktisk ... da jeg selv koder applikationen ... jeg har
dermed fuld kontrol over, hvilke data der ligger hvor ... derfor behøver jeg
principielt ikke HEAD-delen.

Jeg sidder lige nu og kigger på REgExp på MSDN for at konstruere et regexp,
der adskiller strengen første gang der kommer to linefeeds ... det eneste
den skal gøre er altså at adsille strengen ved første 2xVbCrLF ... og så
ignorere yderligere 2xVbCrLf

.... men det er totalt sort ...

Jeg er kommet frem til følgende:

set rexp = new RegExp
' men skal det være \r for at matche på carriage-return ?
rexp.Pattern = ".\n\n."
rexp.Execute(str)

men ... big surprise ... det dutter ikke ...
--
(Mary had a crypto key, she kept it in escrow, and everything that
Mary said, the Feds were sure to know.
(Sam Simpson, July 9, 1998)
- Jesper Stocholm - http://stocholm.dk

Thomas Jespersen (01-04-2001)
Kommentar
Fra : Thomas Jespersen


Dato : 01-04-01 14:24

usenet@stocholm.dk (Jesper Stocholm) writes:

> set rexp = new RegExp
> ' men skal det være \r for at matche på carriage-return ?
> rexp.Pattern = ".\n\n."
> rexp.Execute(str)
>

Hvad med et pattern der hedder "^$"

Jesper Stocholm (01-04-2001)
Kommentar
Fra : Jesper Stocholm


Dato : 01-04-01 14:34

Thomas Jespersen <thomas@daimi.au.dk> wrote in
<y4npuewbvop.fsf@sabretooth.daimi.au.dk>:

>usenet@stocholm.dk (Jesper Stocholm) writes:
>
>> set rexp = new RegExp
>> ' men skal det være \r for at matche på carriage-return ?
>> rexp.Pattern = ".\n\n."
>> rexp.Execute(str)
>>
>
>Hvad med et pattern der hedder "^$"

hmmm ... som jeg læser på
http://msdn.microsoft.com/scripting/vbscript/doc/reconspecialcharacters.htm

,så ignorerer den resten af strengen fra det første match

Dvs at mønstret

rexp.pattern = ".\n\n^$" vil give mig delstrengen, der kommer /før/ de to
linieskift ... men det er jo faktisk den sidste del af strengen jeg er
interesseret i.

Vil mønstret

rexp.Pattern = "^.\n\n$" give mig det jeg ønsker ?

Og det sidste: Når jeg nu engang har fået mønstret til at passe - hvordan
får jeg resultatet skrevet ud til klienten ? Så vidt jeg kan se, så
returnerer regexps True/False som default.

--
(Mary had a crypto key, she kept it in escrow, and everything that
Mary said, the Feds were sure to know.
(Sam Simpson, July 9, 1998)
- Jesper Stocholm - http://stocholm.dk

Thomas Jespersen (01-04-2001)
Kommentar
Fra : Thomas Jespersen


Dato : 01-04-01 14:45

usenet@stocholm.dk (Jesper Stocholm) writes:

> >Hvad med et pattern der hedder "^$"
>
> hmmm ... som jeg læser på
> http://msdn.microsoft.com/scripting/vbscript/doc/reconspecialcharacters.htm
>
> ,så ignorerer den resten af strengen fra det første match

Uh, jeg sidder og blander perl ind i dette :)

Ok, jeg tier stille, jeg er stadig ny mht. vbscript.

Jesper Stocholm (01-04-2001)
Kommentar
Fra : Jesper Stocholm


Dato : 01-04-01 14:52

Thomas Jespersen <thomas@daimi.au.dk> wrote in
<y4nhf08buok.fsf@sabretooth.daimi.au.dk>:

>usenet@stocholm.dk (Jesper Stocholm) writes:
>
>> >Hvad med et pattern der hedder "^$"
>>
>> hmmm ... som jeg læser på
>> http://msdn.microsoft.com/scripting/vbscript/doc/reconspecialcharacters
>> .htm
>>
>> ,så ignorerer den resten af strengen fra det første match
>
>Uh, jeg sidder og blander perl ind i dette :)
>
>Ok, jeg tier stille, jeg er stadig ny mht. vbscript.
>

... lige nu er dårlig hjælp bedre end ingen hjælp ... det er heller ikke
fordi jeg ved svine meget om disse regexps.

Hvis der er andre, der har lyst til at træde til med hjælp, så er scenen
åben !

--
(Mary had a crypto key, she kept it in escrow, and everything that
Mary said, the Feds were sure to know.
(Sam Simpson, July 9, 1998)
- Jesper Stocholm - http://stocholm.dk

Lauritz Jensen (01-04-2001)
Kommentar
Fra : Lauritz Jensen


Dato : 01-04-01 14:53

Jesper Stocholm wrote:
>
> Thomas Jespersen <thomas@daimi.au.dk> wrote in
> <y4n3dbsdbzu.fsf@sabretooth.daimi.au.dk>:
>
> >usenet@stocholm.dk (Jesper Stocholm) writes:
> >
> > > Er det muligt at bruge noget a'la "BODY" til at
> > > hente selve indholdet af siden ?
>
> Jeg sidder lige nu og kigger på REgExp [...]

Er det ikke at skyde gråspurve med kanoner? Hvad med:

[...]
s = Socket.Buffer
Socket.Close
Pos1 = InStr(s, vbCrLf & vbCrLf)
Pos2 = InStr(s, vbLf & vbLf)
If ((Pos1<Pos2) Or (Pos2 = 0)) And Not (Pos1 = 0) Then
GetHttp = Mid(s, Pos1 + 4)
ElseIf ((Pos2<Pos1) Or (Pos1 = 0)) And Not (Pos2 = 0) Then
GetHttp = Mid(s, Pos2 + 2)
End If

--
Lauritz

Jesper Stocholm (01-04-2001)
Kommentar
Fra : Jesper Stocholm


Dato : 01-04-01 15:41

Lauritz Jensen <lauritz2@hotmail.com> wrote in
<3AC732B1.B29E45AC@hotmail.com>:

>Jesper Stocholm wrote:
>>
>> Thomas Jespersen <thomas@daimi.au.dk> wrote in
>> <y4n3dbsdbzu.fsf@sabretooth.daimi.au.dk>:
>>
>> >usenet@stocholm.dk (Jesper Stocholm) writes:
>> >
>> > > Er det muligt at bruge noget a'la "BODY" til at
>> > > hente selve indholdet af siden ?
>>
>> Jeg sidder lige nu og kigger på REgExp [...]
>
>Er det ikke at skyde gråspurve med kanoner? Hvad med:
>

well ... you tell me ...

>[...]
>s = Socket.Buffer
>Socket.Close
>Pos1 = InStr(s, vbCrLf & vbCrLf)
>Pos2 = InStr(s, vbLf & vbLf)
>If ((Pos1<Pos2) Or (Pos2 = 0)) And Not (Pos1 = 0) Then
> GetHttp = Mid(s, Pos1 + 4)
>ElseIf ((Pos2<Pos1) Or (Pos1 = 0)) And Not (Pos2 = 0) Then
> GetHttp = Mid(s, Pos2 + 2)
>End If
>

jeg har tidligere i dag forsøgt mig med instr() m.fl., men jeg kunne ikke få
det til at vise noget konsistent.

Jeg vil dog prøve med dit forslag senere i aften.



--
(Mary had a crypto key, she kept it in escrow, and everything that
Mary said, the Feds were sure to know.
(Sam Simpson, July 9, 1998)
- Jesper Stocholm - http://stocholm.dk

Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408877
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste