| .\" ************************************************************************** |
| .\" * _ _ ____ _ |
| .\" * Project ___| | | | _ \| | |
| .\" * / __| | | | |_) | | |
| .\" * | (__| |_| | _ <| |___ |
| .\" * \___|\___/|_| \_\_____| |
| .\" * |
| .\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <[email protected]>, et al. |
| .\" * |
| .\" * This software is licensed as described in the file COPYING, which |
| .\" * you should have received as part of this distribution. The terms |
| .\" * are also available at https://curl.se/docs/copyright.html. |
| .\" * |
| .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell |
| .\" * copies of the Software, and permit persons to whom the Software is |
| .\" * furnished to do so, under the terms of the COPYING file. |
| .\" * |
| .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| .\" * KIND, either express or implied. |
| .\" * |
| .\" ************************************************************************** |
| .\" |
| .TH CURLOPT_ACCEPT_ENCODING 3 "November 04, 2020" "libcurl 7.78.0" "curl_easy_setopt options" |
| |
| .SH NAME |
| CURLOPT_ACCEPT_ENCODING \- enables automatic decompression of HTTP downloads |
| .SH SYNOPSIS |
| #include <curl/curl.h> |
| |
| CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPT_ENCODING, char *enc); |
| .SH DESCRIPTION |
| Pass a char * argument specifying what encoding you'd like. |
| |
| Sets the contents of the Accept-Encoding: header sent in an HTTP request, and |
| enables decoding of a response when a Content-Encoding: header is received. |
| |
| libcurl potentially supports several different compressed encodings depending |
| on what support that has been built-in. |
| |
| To aid applications not having to bother about what specific algorithms this |
| particular libcurl build supports, libcurl allows a zero-length string to be |
| set ("") to ask for an Accept-Encoding: header to be used that contains all |
| built-in supported encodings. |
| |
| Alternatively, you can specify exactly the encoding or list of encodings you |
| want in the response. Four encodings are supported: \fIidentity\fP, meaning |
| non-compressed, \fIdeflate\fP which requests the server to compress its |
| response using the zlib algorithm, \fIgzip\fP which requests the gzip |
| algorithm, (since curl 7.57.0) \fIbr\fP which is brotli and (since curl |
| 7.72.0) \fIzstd\fP which is zstd. Provide them in the string as a |
| comma-separated list of accepted encodings, like: |
| |
| "br, gzip, deflate". |
| |
| Set \fICURLOPT_ACCEPT_ENCODING(3)\fP to NULL to explicitly disable it, which |
| makes libcurl not send an Accept-Encoding: header and not decompress received |
| contents automatically. |
| |
| You can also opt to just include the Accept-Encoding: header in your request |
| with \fICURLOPT_HTTPHEADER(3)\fP but then there will be no automatic |
| decompressing when receiving data. |
| |
| This is a request, not an order; the server may or may not do it. This option |
| must be set (to any non-NULL value) or else any unsolicited encoding done by |
| the server is ignored. |
| |
| Servers might respond with Content-Encoding even without getting a |
| Accept-Encoding: in the request. Servers might respond with a different |
| Content-Encoding than what was asked for in the request. |
| |
| The Content-Length: servers send for a compressed response is supposed to |
| indicate the length of the compressed content so when auto decoding is enabled |
| it may not match the sum of bytes reported by the write callbacks (although, |
| sending the length of the non-compressed content is a common server mistake). |
| |
| The application does not have to keep the string around after setting this |
| option. |
| .SH DEFAULT |
| NULL |
| .SH PROTOCOLS |
| HTTP |
| .SH EXAMPLE |
| .nf |
| CURL *curl = curl_easy_init(); |
| if(curl) { |
| curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); |
| |
| /* enable all supported built-in compressions */ |
| curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, ""); |
| |
| /* Perform the request */ |
| curl_easy_perform(curl); |
| } |
| .fi |
| .SH AVAILABILITY |
| This option was called CURLOPT_ENCODING before 7.21.6 |
| |
| The specific libcurl you're using must have been built with zlib to be able to |
| decompress gzip and deflate responses, with the brotli library to |
| decompress brotli responses and with the zstd library to decompress zstd |
| responses. |
| .SH RETURN VALUE |
| Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or |
| CURLE_OUT_OF_MEMORY if there was insufficient heap space. |
| .SH "SEE ALSO" |
| .BR CURLOPT_TRANSFER_ENCODING "(3), " CURLOPT_HTTPHEADER "(3), " |
| .BR CURLOPT_HTTP_CONTENT_DECODING "(3), " |