- crow
- curl库
- 三级目录
crow和flask都是web框架,能够快速搭建web server服务
#include "crow.h"
int main()
{
crow::SimpleApp app;
CROW_ROUTE(app, "/")([](){
return "Hello world";
});
CROW_ROUTE(app,"/hello/")
([](int count){
if (count > 100)
return crow::response(400);
std::ostringstream os;
os << count << " bottles of beer!";
return crow::response(os.str());
});
CROW_ROUTE(app, "/params")
([](const crow::request& req){
std::ostringstream os;
os << "Params: " << req.url_params << "nn";
os << "The key 'foo' was " << (req.url_params.get("foo") == nullptr ? "not " : "") << "found.n";
if(req.url_params.get("pew") != nullptr) {
double countD = boost::lexical_cast(req.url_params.get("pew"));
os << "The value of 'pew' is " << countD << 'n';
}
auto count = req.url_params.get_list("count");
os << "The key 'count' contains " << count.size() << " value(s).n";
for(const auto& countVal : count) {
os << " - " << countVal << 'n';
}
return crow::response{os.str()};
});
app.port(18080).multithreaded().run();
}
curl库
#include#include bool getUrl(char *filename) { CURL *curl; CURLcode res; FILE *fp; if ((fp = fopen(filename, "w")) == NULL) // 返回结果用文件存储 return false; struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Accept: Agent-007"); curl = curl_easy_init(); // 初始化 if (curl) { //curl_easy_setopt(curl, CURLOPT_PROXY, "10.99.60.201:8080");// 代理 curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);// 改协议头 curl_easy_setopt(curl, CURLOPT_URL,"http://www.baidu.com"); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); //将返回的http头输出到fp指向的文件 curl_easy_setopt(curl, CURLOPT_HEADERDATA, fp); //将返回的html主体数据输出到fp指向的文件 res = curl_easy_perform(curl); // 执行 if (res != 0) { curl_slist_free_all(headers); curl_easy_cleanup(curl); } fclose(fp); return true; } } bool postUrl(char *filename) { CURL *curl; CURLcode res; FILE *fp; if ((fp = fopen(filename, "w")) == NULL) return false; curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "/tmp/cookie.txt"); // 指定cookie文件 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "&logintype=uid&u=xieyan&psw=xxx86"); // 指定post内容 //curl_easy_setopt(curl, CURLOPT_PROXY, "10.99.60.201:8080"); curl_easy_setopt(curl, CURLOPT_URL, " http://mail.sina.com.cn/cgi-bin/login.cgi "); // 指定url curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); res = curl_easy_perform(curl); curl_easy_cleanup(curl); } fclose(fp); return true; } int main(void) { getUrl("/tmp/get.html"); postUrl("/tmp/post.html"); }
struct curl_httppost* post;
struct curl_httpposr* last;
curl_formadd(&post,&last,CURLFROM_COPYNAME,"image_file",CURLFROM_BUFFER,"data"
,CURLFROM_BUFFERPTR,fram_encoder_str.c_str(),CURLFROM_BUFFERLENGTH,
fram_encoder.length(),CURLFROM_END);
curl_formadd(&post,&last,CURLFROM_COPYNAME,"json_str",CURLFROM_BUFFER
,CURLFROM_COPYCONTENTS,json.dump().c_str(),CURLFROM_END);
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,write_data_json);
size_t write_data_json(void* ptr,size_t size ,size_t nmeb,void* stream)
{
std::string data((const char*) ptr,(size_t)size*nmeb);
*(std::stringsream *)stream<
三级目录


