Articles of curl

具有multithreadingcurl请求的Segfault

我在这里遇到了一些C ++程序的麻烦。 基本上我已经为http请求写了一个简单的包装,可以一次执行多个请求。 工作绝对好,但是当我做httpS请求时,它在multithreading模式下随机崩溃。 我使用curl和posix线程。 Backtrace看起来像这样: ======= Backtrace: ========= /lib/x86_64-linux-gnu/libc.so.6(+0x80996)[0x7fea9046d996] /lib/x86_64-linux-gnu/libc.so.6(+0x82b80)[0x7fea9046fb80] /lib/x86_64-linux-gnu/libc.so.6(realloc+0xf2)[0x7fea90470ae2] /lib/x86_64-linux-gnu/libcrypto.so.1.0.0(CRYPTO_realloc+0x49)[0x7fea8f9c6169] /lib/x86_64-linux-gnu/libcrypto.so.1.0.0(lh_insert+0x101)[0x7fea8fa4bfb1] /lib/x86_64-linux-gnu/libcrypto.so.1.0.0(+0xe844e)[0x7fea8fa4e44e] /lib/x86_64-linux-gnu/libcrypto.so.1.0.0(ERR_get_state+0xde)[0x7fea8fa4eeee] /lib/x86_64-linux-gnu/libcrypto.so.1.0.0(ERR_clear_error+0x15)[0x7fea8fa4f065] /usr/lib/x86_64-linux-gnu/libcurl.so.4(+0x24e79)[0x7fea90f10e79] /usr/lib/x86_64-linux-gnu/libcurl.so.4(+0x39ea0)[0x7fea90f25ea0] /usr/lib/x86_64-linux-gnu/libcurl.so.4(+0xf8fd)[0x7fea90efb8fd] /usr/lib/x86_64-linux-gnu/libcurl.so.4(+0x219f5)[0x7fea90f0d9f5] /usr/lib/x86_64-linux-gnu/libcurl.so.4(+0x35538)[0x7fea90f21538] /usr/lib/x86_64-linux-gnu/libcurl.so.4(curl_multi_perform+0x91)[0x7fea90f21d31] /usr/lib/x86_64-linux-gnu/libcurl.so.4(curl_easy_perform+0x107)[0x7fea90f19457] ./exbot[0x40273a] /lib/x86_64-linux-gnu/libpthread.so.0(+0x7f6e)[0x7fea90cd6f6e] /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7fea904e79cd] 这可能是libcrypto中的一个错误? 我可以不知何故告诉curl不要使用libcrypto? 任何替代品? 它只使用httpS请求来启动文件,并且即使10000个同时http查询也能正常工作。 干杯,托马斯 只是为了完整我的代码: // simple wrapper for http requests #ifndef _REQUEST_H_ #define _REQUEST_H_ #include <curl/curl.h> #include <pthread.h> #include <string> #include <iostream> ////////////////////////////////// // MACROS ////////////////////////////////// […]

卷起多部分/表单数据和JSON

有没有办法使用curl做一个multipart/form-data文章,并指定数据是application/json ? 它不一定是curl。

Libcurl没有更新

我在Ubuntu 14.04,需要curl版本> 7.40,所以我已经按照一些步骤来安装最新的curl版本(7.48) 作为根 wget http://curl.haxx.se/download/curl-7.48.0.tar.gz apt-get install libtool apt-get install make 提取文件 tar -xvf curl-7.48.0.tar.gz 然后在提取的文件夹中: ./buildconf ./configure make make install 更新了二进制文件 mv /usr/bin/curl /usr/bin/curl.bak cp /usr/local/bin/curl /usr/bin/curl 然后重新启动机器。 我可以看到新的curl版本,但libcurl库没有更新,仍然是7.35 根:〜#curl -V curl 7.48.0 (x86_64-unknown-linux-gnu) libcurl / 7.35.0, OpenSSL / 1.0.1f zlib / 1.2.8 libidn / 1.28 librtmp / 2.3 协议:dict文件ftp ftps gopher http […]

在ShellScript中,基于Curl输出分配variables

我试图编写一个shellcript,将分配一个variables来curl输出。 当我从命令行运行这个curl命令的输出是这样的: $curl "test.test.com/landing/505978290?c=Area%20Rug" www.test.com/test/test?test=test 去这个url应该只是输出一个文本文件与另一个url。 我想testing这第二个url是它应该是的url。 url = $(curl "test.test.com/landing/505978290?c=Area%20Rug") if [$url -gt "www.tazinga.com/landing/505978290?c=area%20rug&si=gw&alt_css=silver&sv=34&"] echo ""test.test.com/landing/505978290?c=Area%20Rug did not redirect properly" else echo "Right URL" fi 但是,当我运行的shellcript我得到这个输出: % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 75 0 75 0 0 997 0 –:–:– –:–:– […]

在Linux上添加对SCP和SFTP的curl支持

我一直在拼命地在CentOS盒子上添加对Curl的SFTP和SCP支持。 我在这里find类似解决scheme的东西: http://andrewberls.com/blog/post/adding-sftp-support-to-curl 我遵循了这些步骤,但发现当试图通过SCP和SFTP获取文件时,连接一旦find文件就会挂起。 我无法解决这个问题,找不到替代解决scheme。 我不得不在工作中使用Curl,因此不能使用其他库。 有没有人成功地在Curl上添加了对SCP和SFTP的支持? 我有一个testing服务器安装程序和其他协议,如FTP工作正常。 任何帮助将不胜感激! 在此先感谢彼得

在linux命令行使用curl –datacurlhttp后期file upload

我一直在尝试在linux命令行中使用以下命令将file upload到服务器: curl -v –data 'file=@/var/www/fbapp/images/registration.png' http://myserver/xmltest/curlupload.php 但它不会将file upload到服务器,即使它正在发送回应。 虽然如果我使用这个命令,它会上传文件并发回响应: curl -v -F 'filename=registration.png' -F 'file=@/var/www/fbapp/images/registration.png' http://myserver/xmltest/curlupload.php 但是我想要curl –data格式的命令。 这是我在服务器上的PHP代码: <?php $uploadpath = "images/"; $filedata = $_FILES['file']['tmp_name']; echo "filedata= ".$filedata; if ($filedata != '') copy($filedata,$uploadpath."1.png"); echo "success"; ?> 这是我回头的标题回应: > POST /xmltest/curlupload.php HTTP/1.1 > User-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3 > Host: myserver […]

通过nghttp2使用带有HTTP \ 2支持的cURL连接到Apple的APNS

我试图按照本教程来编译带有HTTP / 2支持的cURL。 我使用的是Docker,而我的应用程序基于使用Debian的官方PHP Docker镜像 ,尽pipe我在运行Vagrant VM的Ubuntu机器上也产生了相同的问题。 起初似乎没有问题。 确实,运行curl –version显示了我所期望的一切: curl 7.47.1 (x86_64-pc-linux-gnu) libcurl/7.47.1 OpenSSL/1.0.1k zlib/1.2.8 libidn/1.29 libssh2/1.4.3 nghttp2/1.7.1 librtmp/2.3 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp Features: IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets […]

使用POST数据和命令行标题调用CURL

我正在使用RESTAPI与django服务器通信php客户端。 我发布了json数据。 PHP代码是 $arr=array("username"=>"dtthtdas45", "password"=>"123456", "email"=>"ramg@ram.com", "is_active"=>"1", "is_staff"=>"1", "is_superuser"=>"1", "promo_code"=>"1212121", "gender"=>"m", "birth_year"=>"1991", "zip"=>"77707", "first_name"=>"john", "last_name"=>"doe", "current_state"=>"1" ); echo $data_string= json_encode($arr); $ch = curl_init('http://localhost:8000/api/ecp/user/?format=json'); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string)) ); $result = curl_exec($ch); 我怎样才能使用命令行调用相同的URL? 我试过了 curl -H 'Content-Type: application/json' -X POST -d '{"username": […]

如何使用BashparsingHTTP标头?

我需要从我正在使用curl的网页头获得2个值。 我已经能够单独使用以下值: response1=$(curl -I -s http://www.example.com | grep HTTP/1.1 | awk {'print $2'}) response2=$(curl -I -s http://www.example.com | grep Server: | awk {'print $2'}) 但我不知道如何使用单个curl请求分别grep值: response=$(curl -I -s http://www.example.com) http_status=$response | grep HTTP/1.1 | awk {'print $2'} server=$response | grep Server: | awk {'print $2'} 每一次尝试都会导致错误消息或空值。 我相信这只是一个语法问题。

从github下载tarball而不curl

我有一个embedded式系统,我不能安装任何东西,唯一的工具,我可能用来获取的东西是wget。 事实certificate,你不能用wget做同样的事情,你可以用curl来做。 我也不能交叉编译这个系统,所以我需要求助于Python或shell脚本。 有一个名为Dulwich的git的纯Python实现实际上有一些我需要交叉编译的C代码…所以我甚至用这个方法来看看这个,FYI。 我需要的是从github仓库获取代码,显而易见的解决scheme是使用他们提供的tarball。 我通常复制链接从存储库页面下载zipbutton,并使用授权令牌,而不是用户名和密码。 它的工作原理很简单,就像这样: curl -L https://<token>@github.com/<org|user>/<repo>/archive/master.tar.gz | tar xz 事实certificate,wget是更尴尬,无论我尝试只是工作。