有没有一种方法可以使用libcurl>;从HTTP头获取内容长度=7.3.x?
我正在使用libcurl库接收HTTP请求。我想知道正文的内容长度,以便分配内存。是否有库函数或libcurl库支持的解析HTTP头的方法?我不太确定检索内容长度的最有效方法是什么,当我收到标题时,我想使用libcurl中被认为是标准的内容长度。我咨询过,但没有发现任何东西 您可以通过获取有没有一种方法可以使用libcurl>;从HTTP头获取内容长度=7.3.x?,c,libcurl,C,Libcurl,我正在使用libcurl库接收HTTP请求。我想知道正文的内容长度,以便分配内存。是否有库函数或libcurl库支持的解析HTTP头的方法?我不太确定检索内容长度的最有效方法是什么,当我收到标题时,我想使用libcurl中被认为是标准的内容长度。我咨询过,但没有发现任何东西 您可以通过获取内容长度,但我不建议您依赖于此 HTTP并不要求发送标头,事实上,大量HTTP响应在没有标头的情况下发送,因此客户端事先不知道大小 HTTP响应可能非常大,因此如果您的客户机不能完全控制它将获得的资源,那么在内
内容长度
,但我不建议您依赖于此
您说过“我使用的协议需要总长度”,但这并不意味着HTTP将为您提供一个。然后,您可能应该首先获得HTTP响应并计算出总大小,然后再使用第二个需要预先计算大小的协议来传递数据 您可以通过获取
内容长度
,但我不建议您依赖于此
您说过“我使用的协议需要总长度”,但这并不意味着HTTP将为您提供一个。然后,您可能应该首先获得HTTP响应并计算出总大小,然后再使用第二个需要预先计算大小的协议来传递数据 无需解析任何标题-如果您想自己处理到达的数据,查看签名的方式可以很明显地看出,调用中包含了内容的大小,这并不令人惊讶/意外:
size\u t write\u data(void*buffer,size\t size,size\t nmemb,void*userp)代码>是,但nmemb是在回调调用时传入的大小,而不是内容长度。不幸的是,我使用的协议需要总长度。size*nmemb
是缓冲区的内容长度-如果不是,您将无法使用libcurl下载二进制文件,是吗?可能其中一个是1,另一个是字节数。试一试,看看。难道没有这种情况吗?你听说过“开源”的一个重要优点是,呃,开源是开放的,所以你可以自己检查这类东西。或者尝试一下,看看自己从执行下载。但很显然,如果libcurl可以用来下载任意长度的文件,那么处理任意长度的文件size*nmemb
必须是文件中的字节数。否则,收到的文件将是不同的(更大的)长度。无需解析任何标题-如果您想自己处理到达的数据,查看您这样做的方式的签名可以很明显地看出,调用中包含了内容的大小,这并不太令人惊讶/意外:size\u t write\u data(void*buffer,size\u t size,size\u t nmemb,void*userp);
是的,但nmemb是回调调用时传入的大小,而不是内容长度。不幸的是,我使用的协议需要总长度。size*nmemb
是缓冲区的内容长度-如果不是,您将无法使用libcurl下载二进制文件,是吗?很可能其中之一是1和另一个是字节数。试试看。有没有这种情况?你听说过“开源”的一个重要优势吗是因为源代码是开放的,所以你可以自己检查这类东西。或者尝试一下,看看是否执行下载。但很自然,如果可以使用libcurl下载任意长度的文件,那么处理任意长度的文件size*nmemb
必须是文件中的字节数。否则,received文件的长度将不同(更大)。