Tag: libcurl

使用libcurl作为XML文件发送SOAP请求

我正在尝试使用libcurl对Web服务执行SOAP http发布。 我已经在我生成的XML文件中形成了SOAP请求。 现在我需要将这些XML文件转发到Web服务。 NB我很擅长编写Web服务(特别是在C语言中)。 有没有办法使用libcurl直接从XML文件发送SOAP请求? 或者我必须将内容读入字符串? 我只能使用C编程语言来完成任务。 我一直在查看文档和不同的代码片段,但我似乎找不到任何要求的东西。 这个curl链接通过字符串http://curl.haxx.se/libcurl/c/post-callback.html来完成 。 为了速度目的,我非常希望在发送之前不必传递给字符串。

LibCurl – 释放静态Lib链接问题

我已经有一段时间了。 我希望有人可以告诉我我做错了什么。 这是我到目前为止采取的步骤: – 下载最新版本的cURL(7.21.7)。 – 使用vc6curl.dsw在Visual Studio 2010中打开解决方案,并将项目转换为VS2010。 – 将libcurl项目配置设置为“release”并构建。 构建成功。创建名为“LIB-Release”的文件夹。 它包含几个obj文件,“libcurl.lib”文件也驻留在这里。 测试应用: – 在项目的设置中,我将编译器指向curl include(headers)。 C / C ++ >>一般>>附加包含目录 – 为预处理器定义添加了“CURL_STATICLIB” C / C ++ >>预处理器定义 – 在我的链接器附加库依赖项中添加了“libcurl.lib”文件夹的路径 链接>>一般>>附加图书馆目录 – 为我的链接器添加了“libcurl.lib”附加依赖项 链接>>输入>>附加依赖项 – 将我的项目配置设置为“Realease”并点击构建! 我得到42个未解决的外部错误: 错误65错误LNK1120:42未解析的外部C:\ Users \ Nick \ Documents \ Visual Studio 2010 \ Projects \ curl_static_lib \ Release \ […]

错误:DescribeRegions API调用上的InvalidAction(Amazon AWS / EC2 API)

我正在编写一个与Amazon EC2 API进行交互的应用程序,因为我之前从未这样做过,所以我决定从像DescribeRegions这样容易的事情开始。 我在C中这样做,因此没有易于使用的库,所以我不得不与libcurl和libcrypto一起破解它。 完全披露,这是我第一次以编程方式与AWS / EC2 API交互,所以这可能是一个愚蠢的新手错误。 我确实读过了stackoverflow; 这与该人试图从bash发送请求并且未引用该字符串的问题不同。 我通过curl_easy_perform()发送请求 在阅读了我能找到的所有文档之后(对于这个示例,让我为我的AWS Access密钥替换AAAAAAAAA,为我的密钥替换BBBBBBB。 我构建了签名请求的参数部分,如下所述: Action=DescribeRegions&AWSAccessKeyId=AAAAAAAA&SignatureMethod=HmacSHA256&”SignatureVersion=2&Timestamp=2013-09-22T02:12:27Z&Version=2013-08-15 然后继续逃避并生成签名请求 GET\n ec2.amazonaws.com\n /\n Action%3DDescribeRegions%26AWSAccessKeyId%AAAAAAAAAAAA%26SignatureMethod%3DHmacSHA256%26SignatureVersion%3D2%26Timestamp%3D2013-09-22T02%3A12%3A27Z&Version=2013-08-15 然后我继续构建一个签名(让我们称之为CCCCCCCC) 并提出一个请求: https://ec2.amazonaws.com/?Action%3DDescribeRegions%26AWSAccessKeyId%3DAAAAAAAAAAAAA%26SignatureMethod%3DHmacSHA256%26SignatureVersion%3D2%26Timestamp%3D2013-09-22T02%3A12%3A27Z&Version=2013-08-15&Signature=CCCCCCCCCCC 当我发送它时,我收到以下错误。 SignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.585f8932-d27b-42b3-b20e-453d8c7ee1ef 我正在使用的签名机制是一个简单的hmac_sha256; 我还尝试了维基百科文章中引用的hmac_sha256库,可在此处下载 。 我已经validation我的签名算法是正确的,现在我只能假设我签名的字符串不正确。 […]

libcurl http以json格式获取请求

有没有办法使用JSON格式的libcurl发送HTTP get请求? 我目前的要求是 curl_easy_setopt(curl_handle, CURLOPT_URL, “http://localhost:9200/_search?q=tag:warcraft”) 使用libcurl。 它相当于curl curl -XGET http://localhost:9200/_all/tweet/_search?q=tag:warcraft 我想使用libcurl发送以下curl请求(以json格式)。 curl -XGET http://localhost:9200/_search -d ‘{ “query” : { “term” : { “tag”: “warcraft” } } }’ 我想知道发送上述请求的等效libcurl代码。 谢谢。

没有自动代理连接头的libcurl HTTP HEAD请求

我需要澄清使用libcurl进行以下操作: 我需要发送如下所示的http HEAD请求:: HEAD /mshare/3/30002:12:primary/stream_xNKNVH.mpeg HTTP/1.1 Host: 192.168.70.1:8080 Accept: */* User-Agent: Kreatel_IP-STB getcontentFeatures.dlna.org: 1 我写的代码(如下所示)以稍微不同的方式发送HEAD请求: curl_global_init(CURL_GLOBAL_ALL); CURL* ctx = NULL; const char *url = “http://192.168.70.1:8080/mshare/3/30002:12:primary/stream_xNKNVH.mpeg” ; char *returnString; struct curl_slist *headers = NULL; ctx = curl_easy_init(); headers = curl_slist_append(headers,”Accept: */*”); headers = curl_slist_append(headers,”User-Agent: Kreatel_IP-STB”);\ headers = curl_slist_append(headers,”getcontentFeatures.dlna.org: 1″); headers = curl_slist_append(headers,”Pragma:”); headers = curl_slist_append(headers,”Proxy-Connection:”); curl_easy_setopt(ctx,CURLOPT_HTTPHEADER […]

libcurl控制台进度条,用于文件下载

在这里,我实现了从服务器下载文件的代码。 它的工作正常。 现在我想制作我自己的进度条function,它可以计算一些数据,如剩余的秒数据速率等等。所以从这里我发现了一种使用curl进度条选项的方法。 我们如何启用此选项。 我完全做到了这一点。 我把我的代码放在下面。 在此代码中, my_progress_func根据curl库时间间隔频繁调用。 我想更改此间隔时间并使其为1秒。 是否有可能在curl库中使用为curl库设置一些选项? 我希望每1秒后调用一次my_progress_func函数。 代码: #include #include long test =0; struct FtpFile { const char *filename; FILE *stream; long iAppend; }; static size_t my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream) { struct FtpFile *out=(struct FtpFile *)stream; if(out && !out->stream) { /* open file for writing */ out->stream=fopen(out->filename, […]

cURL – 将输出变为变量?

我目前正在使用这个C代码: CURL *curl; CURLcode res; curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, “http://my-domain.org/”); res = curl_easy_perform(curl); curl_easy_cleanup(curl); } 它在控制台上打印输出。 如何获得相同的输出,但是将其读入字符串? (这可能是一个基本问题,但我还不了解libcurl API ……) 谢谢你的帮助! 麦克风

使用libcurl的SMTP邮件

我用libcurl编译了c示例。 源文件是smtp-tls.c 试图用它来通过Gmail发送邮件,这是我得到的回复 即将连接()到smtp.gmail.com端口465(#0) 尝试74.125.115.109 … *已连接 使用Basic的用户’xxxxxxx@gmail.com’的服务器validation GET / HTTP / 1.1授权:基本xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx主持人:smtp.gmail.com:465接受: / 来自服务器的空回复 连接#0到主机smtp.gmail.com完好无损 服务器什么都没有返回(没有标题,没有数据 关闭连接#0 我错过了什么? 除了变量输入之外,我没有以任何方式修改代码。 在这台机器上,我可以使用Outlook 2003发送和接收邮件。 编辑 试过一个不同的港口。 结果就是这样 即将连接()到smtp.gmail.com端口587(#0) 尝试74.125.93.109 …… *已连接 使用Basic的用户’xxxxxxx@gmail.com’的服务器validation GET / HTTP / 1.1授权:基本xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx主持人:smtp.gmail.com:587接受: / 220 mx.google.com ESMTP ew54y2x5of95qdz.12 502 5.5.1无法识别的命令。 ew54y2x5of95qdz.12 *连接#0到主机smtp.gmail.com保持原样*关闭连接#0 编辑 Main看起来像这样 int main() { CURL *curl; CURLcode res; struct curl_slist […]

如何使用libcurl保存图像

我想将libcurl用于涉及从网页获取图像的项目。 URL如下所示: http://sofzh.miximages.com/c%2B%2B/image.jpg 使用命令行cURL我可以使用检索图像 $curl -o sampleimage.jpg http://sofzh.miximages.com/c%2B%2B/image.jpg 我想知道libcurl中这段代码的等价物,因为我现在已经疯了。 我在网上得到了这个示例源,它编译和填充,但我无法在任何地方看到图像文件。 这是代码: #include #include #include using namespace std; int main(){ CURL *image; CURLcode imgresult; FILE *fp; image = curl_easy_init(); if( image ){ // Open file fp = fopen(“google.jpg”, “wb”); if( fp == NULL ) cout << "File cannot be opened"; curl_easy_setopt(image, CURLOPT_URL, "http://sofzh.miximages.com/c%2B%2B/video.jpg"); curl_easy_setopt(image, CURLOPT_WRITEFUNCTION, NULL); […]

使用libcurl制作https

我正在尝试连接到谷歌API。 这在我的终端工作正常,我正在做: curl https://www.googleapis.com/tasks/v1/users/@me/lists –header “Authorization: Bearer myAccessCode” 。 这工作正常,但现在我想在内部交流程序。 为此,我有: CURL *curl; char *header = “Authorization: Bearer myAccessCode”; struct curl_slist *headers = NULL; headers = curl_slist_append(headers, header); curl = curl_easy_init(); char *response = NULL; curl_easy_setopt(curl, CURLOPT_URL, “https://www.googleapis.com/tasks/v1/users/@me/lists”); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(curl, CURLOPT_HTTPGET, 1); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, […]