Tag: libcurl

如何使用libcurl进行HTTP发布?

我是新用的libcurl。 我不清楚如何将它用于HTTP POST请求以及如何检查结果。 我怎么能用它呢?

windows上的libcurl静态库

如何将这个库libcurl静态链接到exe? 我试过了 –disable-share –enable-static没有帮助。 我正在使用MingW32 有没有一种简单的方法来静态链接这个库,所以我可以没有更多.dlls与我的应用程序?

libcurl imaps不返回标题字段“Content-Transfer-Encoding”或“Content-Type”

我一直在尝试手动检测电子邮件的编码,以查看我刚刚提取的电子邮件是否需要进行base64解码,但这不是一个完整的解决方案。 所以现在我首先尝试下载电子邮件的标题(字段),检查它们是什么类型的电子邮件然后继续用base64解码它,以防标题说它是base64编码的电子邮件或者只是跳过它如果是纯文本或HTML文本。 问题是用于获取这些字段的libcurl命令实际上不起作用,大多数情况下“Content-Type”只返回一个空字符串或者说它是一个多部分/替代,但当我手动检查电子邮件时它是只是一个明显不需要解码的纯文本。 “Content-Type”字段multipart / alternative通常有不同的部分,如text,html,base64编码文本,附件等。 在multipart / alternative的情况下, “Content-Transfer-Encoding”字段根本不返回任何内容,这是我最重要的标题字段,可以让我知道它包含的内容。 我对Gmail帐户的imaps请求如下所示: curl_easy_setopt(curl, CURLOPT_URL,”imaps://imap.gmail.com:993/INBOX;UID=33;SECTION=HEADER.FIELDS%%20(Content-Transfer-Encoding%%20Subject%%20From%%20Content-Type)”); 哪个返回: 主题:我的主题来自:myname内容类型:multipart / alternative; 边界= “001a114930a049c6da05dskdls9” 如您所见,它不会返回“Content-Transfer-Encoding”字段。 此电子邮件实际上仅包含单词“Yup”,因此当通过单击浏览器中的“显示原始”消息进行检查时,它是纯文本而无附件。 系统信息:Linux,C,libcurl,gmail

libcurl可用于发出多个并发请求吗?

我在我的一个项目中使用libcurl。 我知道curl不是用于发出多个并发请求但是libcurl是否支持它? 我知道还有其他工具,比如ab,但是libcurl提供了许多function。 我再次知道我可以在脚本中使用curl来运行多个请求,但这不是我想要的。 我无法找到一个令人满意的答案。 虽然,这不是决定性的。 我应该可以使用多个句柄进行多个连接。 有没人试过这个? 有什么需要注意的问题吗? 我应该可以这样做: my_app –total_connections 1000 –concurrency 100 url

libcurl – PUT问题后的POST

我正在使用libcurl在C中编写一个http客户端。 但是,当重新使用相同的句柄传输PUT后跟POST时,我遇到了一个奇怪的问题。 下面的示例代码: #include void send_a_put(CURL *handle){ curl_easy_setopt(handle, CURLOPT_UPLOAD, 1L); //PUT curl_easy_setopt(handle, CURLOPT_INFILESIZE, 0L); curl_easy_perform(handle); } void send_a_post(CURL *handle){ curl_easy_setopt(handle, CURLOPT_POST, 1L); //POST curl_easy_setopt(handle, CURLOPT_POSTFIELDSIZE, 0L); curl_easy_perform(handle); } int main(void){ CURL *handle = curl_easy_init(); curl_easy_setopt(handle, CURLOPT_URL, “http://localhost:8888/”); curl_easy_setopt(handle, CURLOPT_HTTPHEADER, curl_slist_append(NULL, “Expect:”)); curl_easy_setopt(handle, CURLOPT_VERBOSE, 1L); //for debug send_a_put(handle); send_a_post(handle); curl_easy_cleanup(handle); return 0; } 问题是,发送PUT然后发送POST ,它发送2个PUT : […]

如何在每个http包中发送libcurl发送摘要认证头?

我有以下函数http_send_message()我每次想要发送一条http消息时使用它: http_send_message(char *msg_out, char **msg_in) { CURLcode res; CURL *curl; curl = curl_easy_init(); if (!curl) return -1; curl_easy_setopt(curl, CURLOPT_URL, “http://192.168.1.133:8080/tawtaw”); curl_easy_setopt(curl, CURLOPT_USERNAME, “tawtaw”); curl_easy_setopt(curl, CURLOPT_PASSWORD, “tawtaw”); curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC|CURLAUTH_DIGEST); . . . curl_easy_cleanup(curl); } 但我在每次函数发送http消息时都会注意到,它会尝试在没有摘要认证头的情况下发送请求,然后使用摘要认证头发送它。 在正常情况下,它应该仅在第一条消息中执行此行为。 对于后续消息,它应该记住认证头并在每条消息中发送它

libcurl(linux,C) – 是否有一种内置的POST / PUT压缩请求方式?

我想使用GZIP压缩请求执行HTTP POST和/或PUT(使用libcurl)。 我无法在libcurl中找到任何本机支持,我想知道我是否找不到正确的文档或者是否真的没有这方面的支持? (即我是否必须实现自己的包装器来gzip请求体?)

我如何使用libcurl函数“curl_easy_setopt(CURL * handle,CURLOPT_DNS_LOCAL_IP4,char * address);”

我想使用函数curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP4, char *address) ,但是当我下载源代码时, ./configure && make && make install 每个function都可以,但这个函数curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP4, char *address) 。 此函数说明http://curl.haxx.se/libcurl/c/CURLOPT_DNS_LOCAL_IP4.html.AVAILABILITY表示此选项要求libcurl是使用支持此操作的解析程序后端构建的。 c-ares后端是唯一这样的。 这是什么意思? 我如何使用resoluver后端构建libcurl。 谢谢

如何在/使用Visual Studio 2010为64位Windows构建libcurl?

所以最初,我按照BUILD.WINDOWS.txt的指示,通过创建一个新文件winbuild.bat并将其放在我的curl文件夹的根目录中,我能够获得构建32位的libcurl: CALL “C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat” CD winbuild DEL CURL_OBJS.inc DEL LIBCURL_OBJS.inc DEL vc100.idb nmake /f Makefile.vc mode=dll VC=10 ENABLE_WINSSL=yes GEN_PDB=yes MACHINE=X86 CD .. EXIT /B 0 然后我从现有代码转到File / New / Project … / Visual C ++ /使用外部构建系统/构建命令行:winbuild.bat。 我尝试使用winbuild64.bat在我的x64属性中创建一个新平台: CALL “C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\vcvarsx86_amd64.bat” CD winbuild DEL CURL_OBJS.inc DEL LIBCURL_OBJS.inc DEL […]

valgrind在使用libcurl时检测到内存泄漏(没有ssl)

在我的C程序中,我使用了libcurl的一些基本function。 今天我跑了valgrind,以检查我是否有内存泄漏,valgrind疯狂报告多个错误。 我跟踪它基本上是: CURL *curl; CURLcode res; curl = curl_easy_init(); // … curl_easy_cleanup(curl); 如果我完全删除使用libcurl的代码,valgrind不会报告任何错误。 我已经读过使用带有libcurl和ssl的valgrind有一些问题,但我不提取任何httpsurl等。 我能做什么? 我可以让valgrind关闭libcurl错误(可能出现误报吗?)并仅报告我的代码中的错误? 尽管libcurl使用最简单,但由于存在大量错误,因此valgrind的输出非常混乱。 不幸的是我没有安装libcurl构建的调试,所以valgrind甚至不会报告它检测到泄漏的行号/文件。 错误消息如下所示: ==27330== ==27330== HEAP SUMMARY: ==27330== in use at exit: 34,960 bytes in 2,406 blocks ==27330== total heap usage: 20,130 allocs, 17,724 frees, 2,511,576 bytes allocated ==27330== ==27330== 40 (20 direct, 20 indirect) bytes in 1 […]