有没有办法使用 libcurl >=7.3.x 从 HTTP header 获取 content-length?
Is there a way to get the content-length from an HTTP header using libcurl >=7.3.x?
我正在使用 libcurl 库接收 HTTP 请求。我想知道 body 的内容长度,以便分配内存。是否有库函数或 libcurl 库支持解析 HTTP header 的方式?当我收到 header 并且我想使用 libcurl 中被认为是标准的内容时,我不太确定检索内容长度的最有效方法是什么。我咨询了 the docs 但没有找到任何东西。
您可以使用 CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 获得 Content-Length
,但我不建议您依赖它。
- HTTP 不强制发送 header,实际上大量 HTTP 响应在没有 header 的情况下发送,因此客户端不知道大小 before-hand.
- HTTP 响应可能非常大,因此如果您的客户端不能完全控制它将获得的资源,那么在内存中分配和存储整个响应可能是一个非常糟糕的主意。
您说"the protocol I am using requires total length up front",但这并不意味着HTTP 会为您提供一个。然后,您应该 可能 而不是首先获取 HTTP 响应并计算出总大小,然后再使用需要预先确定大小的第二个协议来传递数据!
我正在使用 libcurl 库接收 HTTP 请求。我想知道 body 的内容长度,以便分配内存。是否有库函数或 libcurl 库支持解析 HTTP header 的方式?当我收到 header 并且我想使用 libcurl 中被认为是标准的内容时,我不太确定检索内容长度的最有效方法是什么。我咨询了 the docs 但没有找到任何东西。
您可以使用 CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 获得 Content-Length
,但我不建议您依赖它。
- HTTP 不强制发送 header,实际上大量 HTTP 响应在没有 header 的情况下发送,因此客户端不知道大小 before-hand.
- HTTP 响应可能非常大,因此如果您的客户端不能完全控制它将获得的资源,那么在内存中分配和存储整个响应可能是一个非常糟糕的主意。
您说"the protocol I am using requires total length up front",但这并不意味着HTTP 会为您提供一个。然后,您应该 可能 而不是首先获取 HTTP 响应并计算出总大小,然后再使用需要预先确定大小的第二个协议来传递数据!