Ich bin ein C-Programm implementieren, die die Größe einer Remote-Datei aus dem Header Content-Length
lesen muss (wenn Content-Length
in den Antwortheadern gesendet wird).Wie kann ich mit CURLOPT_HEADERFUNCTION ein einzelnes Antwortheaderfeld lesen?
Ich habe über die Dokumente von libcurl nachgeschaut, und das Beste, was ich bis jetzt hatte, war eine Callback-Funktion für die CURLOPT_HEADERFUNCTION
Einstellung. Ich habe zusammen ein Spielzeug Umsetzung eines Rückruf setzen, die die Header STDOUT
drucken soll:
size_t hdf(char* b, size_t size, size_t nitems, void *userdata) {
printf("%s", b);
return 0;
}
Während ich möchte den Content-Length
Header drucken können (oder zumindest alle Header drucken), habe ich diese Funktion nur bekommen kann den Antwortcode drucken:
$ ./curltest "some_url_which_sends_back_Content_Length"
HTTP/1.1 200 OK
Wenn ich die Zeile in meinem main
Kommentar aus, die den Rückruf an die hdf
oben definierte Funktion setzt, ist das Standardverhalten alle Header drucken zu STDOUT
.
Als Referenz ist hier die main
Funktion Ich verwende, basierend auf einem Gewinde auf der Libcurl Mailingliste:
int main(int argc, char *argv[])
{
CURLcode ret;
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_URL, argv[1]);
curl_easy_setopt(hnd, CURLOPT_HEADER, 1);
curl_easy_setopt(hnd, CURLOPT_NOBODY, 1);
curl_easy_setopt(hnd, CURLOPT_HEADERFUNCTION, hdf);
ret = curl_easy_perform(hnd);
curl_easy_cleanup(hnd);
}
Wie kann ich einen Rückruf für die CURLOPT_HEADERFUNCTION
Option schreiben, die auf einen speziellen Header laden in den Speicher oder anderweitig manipulieren - oder zumindest alle Header in den Speicher laden?
D'oh, ich muss mehr auf die Dokumente achten. Danke für die Erklärung! – Jules