Mit welcher Lib kann ich das Encoding gzip, deflate, sdch downloaden?


  • Gesperrt

    Ich möchte gern eine (komprimierte) Textdatei mit dem Accept-Encoding: gzip, deflate, sdch dowloaden. Wäre das mit curl möglich und wenn ja wie kann ich es aufrufen?




  • Gesperrt

    Ahhh, super, danke, Example, @wob :

    /* enable all supported built-in compressions */
    curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, "");


  • Gesperrt

    Noch eine Frage. Schickt er dann auch das gewünschte Encoding im Request Header mit? Oder wie wählt der Server seine Antwort? Wie schaut das Kommunikationsprotokoll?

    Es geht um eine 2,5 GB-Textdatei mit vielen Zeilenumbrüchen - komprimiert kann eine viel kleinere Menge übertragen werden.

    Auf Client-Seite brauche ich die Datei dann natürlich unkomprimiert...


  • Gesperrt

    Es lüppt.

    void loadData1(const char *url, const char *filename)
    {
        CURL *curl = curl_easy_init();
        if (curl)
        {
            curl_easy_setopt(curl, CURLOPT_URL, url);
            /* enable all supported built-in compressions */
            curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, "");
    
            FILE *fp = fopen(filename, "wb");
            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, NULL);
            curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
    
            time_t t1 = time(0);
            /* Perform the request, res will get the return code */
            CURLcode res = curl_easy_perform(curl);
            time_t t2 = time(0);
            cout << (t2 - t1) << " Sek " << ((t2 - t1) / 60.0) << " Min" << endl;
    
            /* Check for errors */
            if (res != CURLE_OK)
            {
                fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
            }
    
            /* always cleanup */
            curl_easy_cleanup(curl);
            fclose(fp);
        }
    }
    

    Für 200 MB braucht er zum Bleistift 10 Sekunden und da das 4-mal schneller als meine Anschluss ist, gehe ich davon aus dass alles stark komprimiert gesendet/empfangen wird... 😉


Anmelden zum Antworten