HTTP - Antwortfelder einfach ermittelt ;)

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

HTTP - Antwortfelder einfach ermittelt ;)

Beitrag von Bisonte »

Weil ich gerade die Dateigrösse von Files aus der GetHTTPHeader() Funktion ermitteln musste,
bastelte ich mir einen kleinen Helfer, um an die verschiedenen HTTP-Antwortfelder zu kommen.

Falls jemand noch nicht auf diese Idee gekommen ist ;)

Der Mapkey ist übrigens immer UCase(). Die Antwort natürlich nicht.
Den Key "STATUS" habe ich dazugedichtet um den typischen Antwortcode
eines Servers abzulegen (z.B. : HTTP/1.0 200 ok)

Code: Alles auswählen

EnableExplicit

Procedure _GetHTTPHeader(Url.s, Map Header.s())
  
  Protected String.s, i, bString.s
  
  ClearMap(Header())
  
  If InitNetwork()
     
    String = GetHTTPHeader(Url)
    If String <> ""
      For i = 1 To CountString(String, Chr(13) + Chr(10))
        bString = Trim(StringField(String, i, Chr(13) + Chr(10)))
        If bString <> ""
          If Left(LCase(bString), 4) = "http"
            Header("STATUS") = bString
          Else
            Header(UCase(StringField(bString, 1, ":"))) = Trim(StringField(bString, 2, ":"))
          EndIf
        EndIf
      Next i
    EndIf
        
  EndIf
  
  ProcedureReturn MapSize(Header())
  
EndProcedure

;:- Demo

NewMap kk.s()

If _GetHTTPHeader("http://purebasic.fr/german/styles/subsilver2/imageset/PureBoardLogo.png", kk())
  If FindMapElement(kk(), "CONTENT-LENGTH")
    Debug LSet(MapKey(kk()), 30, " ") + kk()
  EndIf
EndIf
Zuletzt geändert von Bisonte am 09.06.2014 11:37, insgesamt 2-mal geändert.
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: HTTP - Antwortfelder einfach ermittelt ;)

Beitrag von HeX0R »

Das ForEach kk() kannst Du Dir sparen.
Hattest wohl vorher eine Liste?
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: HTTP - Antwortfelder einfach ermittelt ;)

Beitrag von Bisonte »

Ups... Nein vorher war da die Aufzählung aller Keys...
So nun siehts besser aus ;)
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Antworten