Skip to main content
Skip table of contents

TBeCbHTTP

TBeCbHTTP

Die Klasse TBeCbHTTP ermöglicht das Auslesen von HTML-Quelltext für die Verwendung im Codeblock.

Außerdem stellt die Klasse Eigenschaften und Methoden zur erweiterten Nutzung von HTTP-Requests zur Verfügung.

Eigenschaften

Beschreibung

CbConnectTimeout:N

Timeout in Millisekunden für den Verbindungsaufbau (Default: 0: kein Timeout)

CbReadTimeout:N

Timeout in Millisekunden für das Lesen des Ergebnisses (Default: 0: kein Timeout)

CbHTTPBody:C

Inhalt des Body der HTTP-Response, im Fehlerfall leer

CbErrorHTTPStatusCode:N

Im Fehlerfall: Statuscode der HTTP-Response, sonst = 0
Sonderfälle - werden vom Client (nicht vom Server!) gesetzt, damit eine Behandlung dieser relativ häufig vorkommenden Problemfälle möglich wird.

  • Ein ReadTimeout führt immer zu ErrorHTTPStatusCode = 408

  • Ein ConnectTimeout führt immer zu ErrorHTTPStatusCode = 118

  • Eine nicht verfügbare Adresse führt immer zu ErrorHTTPStatusCode = 404
    (sofern der Server nicht anderweitig antwortet)

CbErrorHTTPStatusText:C

Im Fehlerfall: Statustext der HTTP-Response, sonst leer

CbErrorHTTPBody:C

Im Fehlerfall: Inhalt des Body der HTTP-Response, sonst leer

CbAuthentificationMode:N

Authentifizierungsmodus
1 = amBasicAuthentication
2 = amBasicAuthenticationUnicode
3 = amDigestAuthentication

CbAuthentificationUserName:C

User-Name für die BasicAuthentification

CbAuthentificationPassword:C

Passwort für die BasicAuthentification

CbJSONResponse:O

Antwort eines JSON-Request als Objekt vom Typ TBeasCustomServiceParamItem

CbHandleRedirects:L

Für Statuscode 3xx (auserhalb 304) weiterleiten nach eine Redirect URL wenn ein URL bekommt werde von Server

CbUserAgent:C

Angabe welcher Client die Anfrage sendet, z.b. "Mozilla/4.0 (compatible)"

CbHeaders:O

String-Listen Objekt welche zusätzliche Header für den Request enthalten

CbResponse:C

identisch zu CbHTTPBody

CbResponseAsAnsi:C

Inhalt des HTTP-Response, im Fehlerfall leer. Die Rückgabe wird automatisch in das ANSI-Format konvertiert.

CbResponseHeaders:O

String-Listen Objekt zum Zugriff auf alle Header welche zurückgeliefert werden

CbResponseCharSet:C

CharSet des HTTP-Response

CbResponseContentType:C

ContentType des HTTP-Response

CbRequestAccept:C

HTTP Accept Eigenschaft für den Request. Was wird als Response akzeptiert

CbRequestContentType:C

ContentType des HTTP Requests

CbDebugActive:L

Debug-Ausgabe aktivieren. True - es werden alle Kommunikations-Schritte protokolliert
Default = False

CbDebugInfo:C

Debug-Ausgabe. Nach Durchführung einer Kommunikation bei CbDebugActive = True, ist hier das Protokoll enthalten

CbValidateServerCertificate:L

SSL-Algorithmus versucht, um alle SSL-Zertifikate zu verifizieren. Default: True. Mit Wert False wird kein Zertifikat verifiziert. Nach der Verifizierung folgt CbOnValidateCertificate Ereignis.

CbOnValidateCertificate:E

Ereignis um einen Zertifikat zu verifizieren. Erster Parameter wird von Klasse TbeCBCertificateInfo, die alle Informationen über den Zertifikat trägt, so wie die Rückgabe-Feld CbAccepted.

Funktionen / Methoden

Parameter

Beschreibung

CbGetURL()

aURL:C

Führt mit der übergebenden URL einen HTTP-Get-Request aus.

CbGetURLHandleRedirects()

aURL:C
aHandleRedirects:L

Führt mit der übergebenden URL einen HTTP-Get-Request aus. Per aHandleRedirects kann gesteuert werden ob evtl. Server Redirects verfolgt werden oder es einen Fehler gibt.

CbGet()

aURL:C

identisch zu CbGetURL()

CbPatch()

aURL:C
aData:C

Führt mit der übergebenen URL einen HTTP-Patch-Request aus. Dabei wird aData übertragen.

CbPost()

aURL:C
aData:C

Führt mit der übergebenen URL einen HTTP-Post-Request aus. Dabei wird aData übertragen.

CbPut()

aURL:C
aData:C

Führt mit der übergebenen URL einen HTTP-Put-Request aus. Dabei wird aData übertragen.

CbDelete()

aURL:C

Führt mit der übergebenen URL einen HTTP-Delete-Request aus.

CbResponseHeaderExists()

aKey:C

Prüft ob ein Key im Rückgabe Header existiert

CbResponseHeaderValue()

aKey:C

Gibt den Wert eines Keys im Rückgabe Header zurück

CbRequest():O

aURL:C
aMode:C
aRequestParam:O

Führt mit der übergebenen URL und dem JSON-Parameter als TbeCbAnything-Object einen JSON-Request im entsprechendem Modus (rmDelete, rmGet, rmPath, rmPost, rmPut) aus.

Die Rückgabe des Request wird als TbeCbAnything-Objekt zurückgegeben. Achtung, das Objekt muss selbst per DestroyObject() freigegeben werden.

CbRequestWithResponse()

aURL:C
aMode:C
aRequest:O
aResponse:O

Identisch zu CbRequest(), mit der Ausnahme, dass die Rückgabe des Requests in das TbeCbAnything-Objekt aResponse erfolgt. Hiermit kann die Verwaltung des Response-Objekts selbst übernommen werden.

CbRequestPlain():C

aURL:C
aMode:C
aRequestParam:C
aResultAsAnsi:C

Führt mit der übergebenen URL und den Request-Parametern als String einen Request im entsprechendem Modus (rmDelete, rmGet, rmPath, rmPost, rmPut) aus. Mit dem Parameter aResultAsAnsi kann die Rückgabe des Request ins ANSI-Format konvertiert werden.

CbJSONRequest()

aURL:C
aMode:N
aRequestParam:O

Führt mit der übergebenen URL und dem JSON-Parameter als TBeasCbServiceInputParam-Object einen JSON-Request im entsprechendem Modus (1 = get, 2 = post) aus.

Beispiel

CODE

//******************************************************************************
// Liefert als Ergebnis den Inhalt der HTML-Seite
//   Im Fehlerfall enthält cHTTPGetResult alle verfügbaren Informationen
//   über den aufgetretenen Fehler.
//   Im Fall von einem Redirect, ist der Inhalt der neue HTML-Seite das Ergebnis
//******************************************************************************
function HTTPRequest(lUseRedirect:L, lAllowRedirect:L)
|cURL, oHTTP, cDivider, cResult|

   cResult  := '',
   cURL     := 'http://www.google.com/search?q=example',
   cDivider := Replicate('-', 80),

   oHTTP    := CreateObject('TBeCbHTTP'),
   startseq,
     oHTTP.CbConnectTimeout := 2000,
     oHTTP.CbReadTimeout    := 2000,
     oHTTP.CbUserAgent      := 'Mozilla/4.0 (compatible)',
     CollAdd(oHTTP.CbHeaders, 'be-test:beheader'),
     startseq
        if lUseRedirect then
           oHTTP.CbGetURLHandleRedirects(cURL, lAllowRedirect),
        else
           oHTTP.CbGetURL(cURL), // HTTP-Request auslösen
        endif,

        cResult := oHTTP.CbHTTPBody,
     onerror
        cResult :=
           GetErrorText()                                              + crlf + cDivider + crlf +
           'ErrorHTTPStatusCode = ' + Str(oHTTP.CbErrorHTTPStatusCode) + crlf + cDivider + crlf +
           'ErrorHTTPStatusText = ' +     oHTTP.CbErrorHTTPStatusText  + crlf + cDivider + crlf +
           'ErrorHTTPBody       = ' +     oHTTP.CbErrorHTTPBody,
     stopseq,
   always,
     DestroyObject(oHTTP),
   stopseq,

   Result := cResult,
end,

//******************************************************************************
// Verifiziert übergebenen Zertifikat
//******************************************************************************
function HTTPSValidate(oCert:O),
  Writeln('Depth: ' + Str(oCert.CbDepth)),
  Writeln('Version: ' + Str(oCert.CbVersion)),
  Writeln('SerialNumber: ' + oCert.CbSerialNumber),
  Writeln('SignatureAlgorithmAsNID: ' + Str(oCert.CbSignatureAlgorithmAsNID)),
  Writeln('SignatureAlgorithmAsString: ' + oCert.CbSignatureAlgorithmAsString),
  Writeln('IssuerString: ' + oCert.CbIssuerString),
  Writeln('ValidFromInGMT: ' + DToS(oCert.CbValidFromInGMT)),
  Writeln('ValidToInGMT: ' + DToS(oCert.CbValidToInGMT)),
  Writeln('SubjectString: ' + oCert.CbSubjectString),
  Writeln('ThumbprintAsMD5: ' + oCert.CbThumbprintAsMD5),
  Writeln('ThumbprintAsSHA1: ' + oCert.CbThumbprintAsSHA1),
  Writeln('ThumbprintAsSHA256: ' + oCert.CbThumbprintAsSHA256),
  Writeln('ThumbprintAsSHA256: ' + oCert.CbThumbprintAsSHA256),
  Writeln('Von SSL Accepted: ' + iif(oCert.CbAccepted, 'true', 'false')),
  Writeln('Error: ' + Str(oCert.CbErrorValue)),
  Writeln('ErrorString: ' + oCert.CbErrorString),

  oCert.CbSaveToFile('C:\temp\cert\' + oCert.CbThumbprintAsMD5 + '.pem'),

  oCert.CbAccepted := true,
end,

//******************************************************************************
// Liefert als Ergebnis den Inhalt des POST-Request zurück
//******************************************************************************
function HTTPSPost()
|cHTTPBody:C, oHTTP|

   cHTTPBody := '',
   oHTTP     := CreateObject("TBeCBHTTP"),
   startseq,
      AssignEvent(oHTTP, 'CbOnValidateCertificate', 'HTTPSValidate'),
      oHTTP.CbUserAgent  := "Mozilla/5.0 (compatible)",

      CollAdd(oHTTP.CbHeaders, "be-test:testheader"),
      CollAdd(oHTTP.CbHeaders,  "accept:application/json"),
      oHttp.CbPost("https://postman-echo.com/post", 'USERID=12345' + CRLF + 'PASSWD=56789'),
      cHTTPBody := oHTTP.CbResponseAsAnsi,
   always,
      DestroyObject(oHTTP),
   stopseq,
   Result := cHTTPBody,
end,

//******************************************************************************
// Liefert als Ergebnis den Inhalt der HTML-Seite
//   Im Fehlerfall enthält cHTTPGetResult alle verfügbaren Informationen
//   über den aufgetretenen Fehler.
//   Im Fall von einem Redirect, ist der Inhalt der neue HTML-Seite das Ergebnis
//******************************************************************************
function HTTPSRequest(lUseRedirect:L, lAllowRedirect:L, lValidate:L)
|cURL, oHTTP, cDivider, cResult|

   cResult  := '',
   cURL     := 'https://www.google.com',
   cDivider := Replicate('-', 80),

   oHTTP    := CreateObject('TBeCbHTTP', 'MyHttp'),
   startseq,
     oHTTP.CbConnectTimeout := 2000,
     oHTTP.CbReadTimeout    := 2000,
     oHTTP.CbUserAgent      := 'Mozilla/4.0 (compatible)',
     CollAdd(oHTTP.CbHeaders, 'be-test:beheader'),

     if lValidate then
       AssignEvent(oHTTP, 'CbOnValidateCertificate', 'HTTPSValidate'),
     else
       oHTTP.CbValidateServerCertificate := false,
     endif,

     startseq
        if lUseRedirect then
           oHTTP.CbGetURLHandleRedirects(cURL, lAllowRedirect),
        else
           oHTTP.CbGetURL(cURL), // HTTP-Request auslösen
        endif,

        cResult := oHTTP.CbHTTPBody,
     onerror
        cResult :=
           GetErrorText()                                              + crlf + cDivider + crlf +
           'ErrorHTTPStatusCode = ' + Str(oHTTP.CbErrorHTTPStatusCode) + crlf + cDivider + crlf +
           'ErrorHTTPStatusText = ' +     oHTTP.CbErrorHTTPStatusText  + crlf + cDivider + crlf +
           'ErrorHTTPBody       = ' +     oHTTP.CbErrorHTTPBody,
     stopseq,
   always,
     DestroyObject(oHTTP),
   stopseq,

   Result := cResult,
end,

//******************************************************************************
//   Liefert als Ergebnis den Inhalt des DELETE-Request zurück
//******************************************************************************
function HTTPDelete(aData:C)
| oHttp, i, cUrl, aDataToDelete, aResponse, cDivider |

   startseq
      oHttp                   := CreateObject('TbeCbHTTP', 'DeleteData'),
      oHttp.CbHandleRedirects := true,
      aResponse               := {},
      cDivider                := Replicate('-', 80),

      startseq
         for i := 1 to Len(aData) do
            cUrl := 'http://localhost:8000/service/rest/data/' + aData[i],
            oHttp.CbDelete(cUrl),
            AAdd(aResponse, oHttp.CbResponseAsAnsi),
         end, 
        
         Result := aResponse,
       onerror,
         Result :=
            GetErrorText()                                              + crlf + cDivider + crlf +
            'ErrorHTTPStatusCode = ' + Str(oHTTP.CbErrorHTTPStatusCode) + crlf + cDivider + crlf +
            'ErrorHTTPStatusText = ' +     oHTTP.CbErrorHTTPStatusText  + crlf + cDivider + crlf +
            'ErrorHTTPBody       = ' +     oHTTP.CbErrorHTTPBody,
      stopseq,
   always,
      DestroyObject(oHttp),
   stopseq,
end,   

writeln('--- Kein Redirect ---'),
writeln( HTTPRequest(false, false) ),

writeln('--- Redirect verboten ---'),
writeln( HTTPRequest(true, false) ),

writeln('--- Redirect erlaubt ---'),
writeln( HTTPRequest(true, true) ),

writeln('--- HTTP-Post, Verifizierung mit CbOnValidateCertificate ---'),
writeln( HTTPSPost() ),

writeln('--- Kein Redirect, Verifizierung mit CbOnValidateCertificate ---'),
writeln( HTTPSRequest(false, false, true) ),

writeln('--- Redirect verboten, Alle Certifikate gültig ---'),
writeln( HTTPSRequest(true, false, false) ),

writeln('--- Redirect erlaubt, Verifizierung mit CbOnValidateCertificate ---'),
writeln( HTTPSRequest(true, true, true) ),

writeln('--- Löschung ausgewählter Dateien ---'),
writeln( HTTPDelete({'Datei1', 'Datei2'}) ),

Weitere Verknüpfungen

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.