
curl "http://www.baidu.com" 如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地
curl -i "http://www.baidu.com" 显示全部信息
curl -l "http://www.baidu.com" 只显示头部信息
curl -v "http://www.baidu.com" 显示get请求全过程解析
wget "http://www.baidu.com"也可以
二、post请求
curl -d "param1=value1&param2=value2" "http://www.baidu.com"
#include <io.h>#include "curl/curl.h"
#pragma comment(lib, "ws2_32.lib")
#pragma comment ( lib, "libcurl.lib" )
#pragma comment ( lib, "ws2_32.lib" )
#pragma comment ( lib, "winmm.lib" )
#pragma comment ( lib, "wldap32.lib" )
//这是libcurl接收数据的回调函数,相当于recv的死循环
//其中stream可以自定义数据类型,这里我传入的是文件保存路径
static size_t write_callback( void *ptr, size_t size, size_t nmemb, void *stream )
{
int len = size * nmemb
int written = len
FILE *fp = NULL
if ( access( (char*)stream, 0 ) == -1 )
{
fp = fopen( (char*) stream, "wb" )
}
else
{
fp = fopen( (char*) stream, "ab" )
}
if (fp)
{
fwrite( ptr, size, nmemb, fp )
}
return written
}
int GetUrl( const char *url, char *savepath )
{
CURL *curl
CURLcode res
struct curl_slist *chunk = NULL
curl = curl_easy_init()
if ( curl ) {
curl_easy_setopt( curl, CURLOPT_VERBOSE, 0L )
curl_easy_setopt( curl, CURLOPT_URL, url )
//指定回调函数
curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, write_callback)
//这个变量可作为接收或传递数据的作用
curl_easy_setopt( curl, CURLOPT_WRITEDATA, savepath )
res = curl_easy_perform( curl )
if (res == CURLE_OK)
{
return 1
}
return 0
}
}
int main( void )
{
if ( GetUrl( "t.sina.com.cn", "c:/1.txt" ) )
{
printf( "OK" )
}
return 0
}
可以。CURLOPT_PROTOCOLS
CURLPROTO_* 的位域指。如果被启用,位域值会限定libcurl在传输过程中有哪些可使用的协议。这将允许你在编译libcurl时支持众多协议,但是限制只是用它们中被允许使用的一个子集。默认libcurl将会使用全部它支持的协议。参见 CURLOPT_REDIR_PROTOCOLS .
可用的协议选项为:CURLPROTO_HTTP、CURLPROTO_HTTPS、CURLPROTO_FTP、CURLPROTO_FTPS、CURLPROTO_SCP、CURLPROTO_SFTP、CURLPROTO_TELNET、CURLPROTO_LDAP、CURLPROTO_LDAPS、CURLPROTO_DICT、CURLPROTO_FILE、CURLPROTO_TFTP、CURLPROTO_ALL
对了,可定能得到返回值
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)