easy:SetOpt_HeaderFunction(header_callback[, userdata])
Der erste Parameter, der an Ihre Callback-Funktion übergeben wird, ist eine
Zeichenkette, die die gerade empfangenen Header-Daten enthält. Wenn Sie das
optionale Argument userdata
übergeben, wird der Wert als zweiter Parameter
an Ihre Callback-Funktion übergeben. Der Parameter userdata
kann von beliebigem
Typ sein.
Diese Callback-Funktion muss die Anzahl der tatsächlich behandelten Bytes
zurückgeben. Wenn dieser Betrag von dem Betrag abweicht, der an Ihre Funktion
übergeben wurde, wird ein Fehler an die Bibliothek gemeldet. Dies führt dazu,
dass die Übertragung abgebrochen wird und die laufende libcurl-Funktion
#CURLE_WRITE_ERROR
zurückgibt.
Wenn Ihre Callback-Funktion nichts zurückgibt, signalisiert dies den Erfolg und die Übertragung wird fortgesetzt.
Ein kompletter HTTP-Header, die an diese Funktion übergeben wird, kann bis
zu #CURL_MAX_HTTP_HEADER
(100K) Bytes umfassen.
Es ist wichtig zu beachten, dass der Callback für den Header aller erhaltenen Antworten nach dem Einleiten einer Anfrage aufgerufen wird und nicht nur für die endgültige Antwort. Dazu gehören alle Antworten, die während der Authentifizierungsverhandlungen auftreten. Wenn Sie nur die Header aus der endgültigen Antwort bearbeiten müssen, müssen Sie die Header im Callback selbst sammeln und HTTP-Statuszeilen verwenden, z.B. Antwortgrenzen zu definieren.
Wenn ein Server eine verteilte verschlüsselte Übertragung sendet, kann er einen Anhang enthalten. Dieser Anhang ist identisch mit einem HTTP-Header und wenn ein solcher empfangen wird, wird er ebenfalls über diesen Callback an die Anwendung übergeben. Es gibt mehrere Möglichkeiten, um zu erkennen, dass es sich um einen Anhang und nicht um eine gewöhnlichen Header handelt:
1) es kommt nach dem Antwort-Body.
2) es kommt nach der letzten Header-Zeile (CR LF).
3) einen Anhang: Der Header wird unter den regulären Antwort-Headern erwähnt,
welche Header im Anhang zu erwarten sind.
Für Nicht-HTTP-Protokolle wie FTP, POP3, IMAP und SMTP wird diese Funktion mit den Serverantworten auf die Befehle, die libcurl sendet, aufgerufen.