0

我想做的事:

我正在尝试编写 ac 程序,该程序将从 URL 下载文件并将其保存在本地,我找到了以下指南,只要我对文件名进行硬编码,它就完全符合我的要求:

http://siddhantahuja.wordpress.com/2009/04/12/how-to-download-a-file-from-a-url-and-save-onto-local-directory-in-c-using-libcurl/

我的问题是什么:

这些文件每小时更新一次,每个新文件的日期和时间都被标记。我可以使用 time.h 预测所需的文件名并提取当前日期和时间信息,但是我不知道如何将这些信息组合成可以传递给 curlib 命令的表单。

当前尝试的解决方案(不起作用):

char *url;                       //char pointer to URL
url = malloc((sizeof(char)*51+1);//allocate memory to pointer address is 51 characters + \0 terminator
sprintf(url, "http://>URL Info</FILENAME%.4d%.2d%.2d%.2d30.jpg\0", year, month, date, hour);
                                 //ie http://example.com/files/FILENAME201304071030.jpg

该字符串正在被填充,因为我可以使用 printf 输出它,但是它似乎没有传递给 curlib 命令:

curl_easy_setopt(curl, CURLOPT_URL, url);

它创建目标文件,但文件为空。我怀疑它与 char 指针和字符串之间的区别有关,但我不确定是什么。

关于我做错了什么以及接下来应该尝试什么的任何想法?

4

1 回答 1

0

您应该在使用 libcurl 的程序中使用CURLOPT_VERBOSE选项并检查正在发送的请求/响应。

我的猜测是,您不知何故只是要求输入错误的 URL,而服务器以 404 或其他没有实际响应正文内容的方式响应。

curl_easy_setopt ( curl , CURLOPT_URL, url); 你显示的电话看起来很好,因为它需要一个零终止的字符 *,这就是你发送给它的内容。当然,VERBOSE 输出也会显示 libcurl 是否以您期望的相同方式处理输入。

于 2013-04-07T08:50:09.293 回答