Seite 1 von 1

HTTP - Antwortfelder einfach ermittelt ;)

Verfasst: 09.06.2014 10:48
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

Re: HTTP - Antwortfelder einfach ermittelt ;)

Verfasst: 09.06.2014 11:21
von HeX0R
Das ForEach kk() kannst Du Dir sparen.
Hattest wohl vorher eine Liste?

Re: HTTP - Antwortfelder einfach ermittelt ;)

Verfasst: 09.06.2014 11:36
von Bisonte
Ups... Nein vorher war da die Aufzählung aller Keys...
So nun siehts besser aus ;)