简单的一个curl小例子:

#include <iostream>
#include <string>
#include <sstream>
#include <curl/curl.h>
#include <string.h> #define BUF_SIZE 1024 * 100
using namespace std; string DownloadString(char* url);
int main(int argc, const char* argv[]){ curl_global_init(CURL_GLOBAL_ALL);
cout <<DownloadString("http://www.baidu.com/");
cin.get();
curl_global_cleanup();
return ;
} int WriteData(char* in, size_t size, size_t nmemb, string* out){
out->append(in);
return size*nmemb;
} string DownloadString(char* url){
string buffer;
string headerData;
CURL* conn;
curl_slist* header = NULL;
header = curl_slist_append(header, "Accept-Encoding: gzip, deflate");
header = curl_slist_append(header, "User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; CIBA)");
header = curl_slist_append(header, "Connection: Keep-Alive"); conn = curl_easy_init();
curl_easy_setopt(conn, CURLoption::CURLOPT_URL, url);
curl_easy_setopt(conn, CURLoption::CURLOPT_HTTPHEADER, header);
curl_easy_setopt(conn, CURLoption::CURLOPT_ACCEPT_ENCODING, "gzip");
curl_easy_setopt(conn, CURLoption::CURLOPT_WRITEDATA, &buffer);
curl_easy_setopt(conn, CURLoption::CURLOPT_WRITEFUNCTION, WriteData);
curl_easy_setopt(conn, CURLoption::CURLOPT_WRITEHEADER, &headerData); CURLcode code = curl_easy_perform(conn);
if (code != CURLcode::CURLE_OK)
return "";
curl_slist_free_all(header);
curl_easy_cleanup(conn); istringstream istream(headerData.c_str());
string out;
bool isgzip = false;
while (istream.good())
{
getline(istream, out, '\n');
if (!out.empty()){
if (out.find("Content-Encoding") != out.npos && out.find("gzip") != out.npos){
isgzip = true;
}
}
} ///gzip
return buffer;
}

该例子通过curl下载百度首页html与响应头信息,并自动对gzip解码。

使用curl 下载HTML的更多相关文章

  1. php通过cURL下载网络上面的一个HTTPS的资源

    <?php /** * php通过cURL下载网络上面的一个HTTPS的资源 * 案例:从google的CDN上下载jquery- v1.7.1 */ $curlobj = curl_init( ...

  2. php使用curl下载指定大小的文件

    php中使用基于libcurl的curl函数,可以对目标url发起http请求并获取返回的响应内容.通常的请求方式类似如下的代码: public function callFunction($url, ...

  3. centos shell编程5 LANMP一键安装脚本 lamp sed lnmp 变量和字符串比较不能用-eq cat > /usr/local/apache2/htdocs/index.php <<EOF重定向 shell的变量和函数命名不能有横杠 平台可以用arch命令,获取是i686还是x86_64 curl 下载 第三十九节课

    centos shell编程5  LANMP一键安装脚本 lamp  sed  lnmp  变量和字符串比较不能用-eq  cat > /usr/local/apache2/htdocs/ind ...

  4. curl下载文件

    * curl下载文件* 根据业务需求* 通过不同站点去访问路径* 下载文件* 但是不同站点需要设置header头* 这里使用curl方式下载* 具体看代码: //下载地址 $url = 'https: ...

  5. curl下载安装

    curl下载地址 https://curl.haxx.se/download.html 选择windows generic 下的 下载安装 安装完后解压配置系统环境变量 CURL_HOME      ...

  6. PHP curl下载图片的方法

    PHP curl下载图片的方法 <pre> <?php $images = [ 'http://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTKPkia3rx ...

  7. curl 下载地址中有特殊字符解决方案

    curl 下载地址中有特殊字符解决方案 情况 使用 curl 下载 地址中带有 特殊字符的时候 比如下面这个地址.实际访问地址不正确,参数丢失问题 curl -o kspf.jpeg https:// ...

  8. linux curl 下载jdk

    进入orecle官网,找到需要的安装包 需要cookie同意相关协议才能下载 curl -L "http://download.oracle.com/otn-pub/java/jdk/8u1 ...

  9. 使用CURL下载远程文件保存到服务器

    比如微信公众平台开发,下载用户的头像到服务器上: /** * 使用CURL获取远程文件保存到服务器 *@param $image=$oJSON->headimgurl; 获取到的微信返回的头像U ...

随机推荐

  1. WebAPI的初步认识(CURD)

    1.创建一个MVC项目,选择API 2.在Models层里添加Product类,IProductRepository接口,ProductRepository类 public class Product ...

  2. 前端工作面试问题--摘取自github

    前端工作面试问题 本文包含了一些用于考查候选者的前端面试问题.不建议对单个候选者问及每个问题 (那需要好几个小时).只要从列表里挑选一些,就能帮助你考查候选者是否具备所需要的技能. 备注: 这些问题中 ...

  3. TCP/IP协议工作原理简述

    TCP/IP协议工作原理简述 // */ // ]]>   TCP/IP协议工作原理简述 Table of Contents 1 概要 2 应用层 3 传输层 4 网络层 5 链路层 1 概要 ...

  4. Android框架之AndroidAnnotations实战

    方案一: 下载 androidannotations-bundle-3.3.2.zip 方案二:   楼主选用开发环境:android studio 新建项目  修改app 下的build.gradl ...

  5. jQuery管理包装集笔记

    size():返回包装集中元素的个数. get([n]):返回一个DOM元素或DOM元素数组(接受负值). toArray():将包装里的所有元素作为DOM元素数组返回. eq(n):获取包装集中与i ...

  6. jquery 给input赋值错误写法

    <script type="text/javascript"> var ue = UE.getEditor('container'); function getCont ...

  7. Spring.Scheduling.Quartz 作业的应用(定时任务和循环触发任务)

    .定时任务的实现,比如有个任务是要晚上2点10分的时候要去触发的,先定义这个任务类RskBookFilterInitDiningService.cs,这里其实有两种实现,一种是需要继承QuartzJo ...

  8. IIS7.5 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面

    IIS7.5中将一网站应用程序池托管管道模式改为经典后,网站页面打不开,错误信息: 引用内容 HTTP 错误 404.2 - Not Found由于 Web 服务器上的“ISAPI 和 CGI 限制” ...

  9. js 常见混乱

    slice(begin.end) 复制出一个新的数组或是一个新的字符串,其中end 不包括end本身 splice(begin,howmany,item1....itemn) 更改原先的array 会 ...

  10. 移动web前端小结(一)--摘自小鹿_同学

    一.框架 框架:Bootstrap+HTML5 Boilerplate. 两个框架整合到一起可以看一下这位大神的文章:<使用 Bootstrap 和 HTML5 Boilerplate 开始一个 ...