libcurl以get方式请求服务器端文件
static size_t callbackfunction(void *ptr, size_t size, size_t nmemb, void* userdata)
{
FILE* stream = (FILE*)userdata;
if (!stream) {
printf("!!! No stream\n");
return 0;
}
size_t written = fwrite((FILE*)ptr, size, nmemb, stream);
return written;
}
unsigned char* HttpsRequest::requestOnlineImage(const char* url, int& resultLen)
{
FILE* fp = fopen("D:\\out.png", "wb");
if (!fp) {
printf("!!! Failed to create file on the disk\n");
return false;
}
unsigned char* result = NULL;
CURL* mCurl = curl_easy_init();
if (!mCurl) {
return NULL;
}
//struct curl_slist* mHeaders = NULL;
//mHeaders = curl_slist_append(mHeaders, "Cache-Control:max-age=0");
//mHeaders = curl_slist_append(mHeaders, "Connection:keep-alive");
//mHeaders = curl_slist_append(mHeaders, "*/*");
//mHeaders = curl_slist_append(mHeaders, "Host:cpi.cn-hangzhou.oss-pub.aliyun-inc.com");
// mHeaders = curl_slist_append(mHeaders, "User-Agent:com.yunos.map/pc");
//mHeaders = curl_slist_append(mHeaders, "Content-type:image/png");
//mHeaders = curl_slist_append(mHeaders, "Response-type:application/octet-stream");
//mHeaders = curl_slist_append(mHeaders, "Accept-Encoding:gzip, deflate");
struct MemoryStruct chunk;
chunk.memory = (unsigned char*)malloc(1);
chunk.size = 0;
curl_easy_setopt(mCurl, CURLOPT_URL, url);
//curl_easy_setopt(mCurl, CURLOPT_HTTPHEADER, mHeaders);
curl_easy_setopt(mCurl, CURLOPT_WRITEFUNCTION, callbackfunction);
curl_easy_setopt(mCurl, CURLOPT_WRITEDATA, fp);
CURLcode mRes = curl_easy_perform(mCurl);
if (mRes != CURLE_OK){
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(mRes));
}
else {
printf("%s\n", chunk.memory);
if (chunk.size > 0) {
result = (unsigned char*)malloc(chunk.size);
memcpy(result, chunk.memory, chunk.size);
resultLen = chunk.size;
}
}
curl_slist_free_all(mHeaders);
free(chunk.memory);
curl_easy_cleanup(mCurl);
mCurl = NULL;
return result;
}
libcurl以get方式请求服务器端文件的更多相关文章
- 通过Ajax方式上传文件,使用FormData进行Ajax请求
通过传统的form表单提交的方式上传文件: <form id= "uploadForm" action= "http://localhost:8080/cfJAX_ ...
- koa2:通过Ajax方式上传文件,使用FormData进行Ajax请求
koa2通过表单上传的网上很多,但通过Ajax方式上传文件,使用FormData进行Ajax请求,不好找. 参考了这个用base64上传图片的例子.https://github.com/Yuki-Mi ...
- [转] 通过Ajax方式上传文件,使用FormData进行Ajax请求
通过传统的form表单提交的方式上传文件: <form id= "uploadForm" action= "http://localhost:8080/cfJAX_ ...
- CURL 和LIBCURL C++代码 上传本地文件,好不容易碰到了这种折腾我几天的代码
解决了什么问题:curl在使用各种方式上传文件到服务器.一般的文件上传是通过html表单进行的,通过CURL可以不经过浏览器,直接在服务器端模拟进行表单提交,完成POST数据.文件上传等功能. 服务器 ...
- python 全栈开发,Day129(玩具开机提示语,为多个玩具发送点播,聊天界面,app录音,app与服务器端文件传输,简单的对话)
一.玩具开机提示语 先下载github代码,下面的操作,都是基于这个版本来的! https://github.com/987334176/Intelligent_toy/archive/v1.2.zi ...
- Ajax方式上传文件
用到两个对象 第一个对象:FormData 第二个对象:XMLHttpRequest 目前新版的Firefox 与 Chrome 等支持HTML5的浏览器完美的支持这两个对象,但IE9尚未支持 For ...
- JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求
JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求 哇,一看标题怎么这么长啊,其实意思很简单,哥讨厌用HTTP Client做POST与GET提交 觉得那个毕竟是别人写 ...
- 关于在页面总嵌入iframe,ifram中发起请求,服务器端的session为空问题解决
本文抄袭:http://blog.csdn.net/ray_adon/article/details/6960724 在做项目是 是用了iframe,iframe发起ajax请求,服务器端报sessi ...
- 三种方式上传文件-Java
前言:负责,因为该项目他(jetty嵌入式开始SpringMvc)实现文件上传的必要性,并拥有java文件上传这一块还没有被曝光.并 Http 更多晦涩协议.因此,这种渐进的方式来学习和实践上载文件的 ...
随机推荐
- 关于nginx所遇问题
1. 如果出现 nginx: [error] invalid PID number “” in “/usr/local/var/run/nginx/nginx.pid” 错误重新加载配置文件 /usr ...
- POJ - 2135最小费用流
题目链接:http://poj.org/problem?id=2135 今天学习最小费用流.模板手敲了一遍. 产生了一个新的问题:对于一条无向边,这样修改了正向边容量后,反向边不用管吗? 后来想了想, ...
- (3)unity3d 地形
在Hierarchy(层次) 建一个Terrain(地形) Terrain属性按钮 第一个按钮:抬升与下陷地面.单击抬升地形,同时按住shift下陷地形 第二个按钮:绘制高度.同时按住shift绘制等 ...
- django使用logging记录日志
django使用logging记录日志,我没有用这方式去记录日志,主要还是项目小的原因吧, 有机会遇见大项目的话可以回头研究. 配置setting.py配置文件 import logging impo ...
- 使用一个数组存储一个英文句子"java is an object oriented programing language"
class fun { public static void main(String[] args) { String str="java is an object oriented pro ...
- HDU4372 Buildings
@(HDU)[Stirling數, 排列組合] Problem Description There are N buildings standing in a straight line in the ...
- IntelliJ IDEA导入包的顺序调整和按包类型分类(保持和Eclipse一致)
调整的内容如下: 空行 import java.* 空行 import javax.* 空行 import com.* 空行 import all other imports 空行 import st ...
- ChsLLVMDocs
https://github.com/wuye9036/ChsLLVMDocs/blob/master/CodeGen.md
- SetProcessWorkingSetSize 和内存释放
http://hi.baidu.com/taobaoshoping/item/07410c4b6d6d9d0d6dc2f084 在应用程序中,往往为了释放内存等,使用一些函数,其实,对于内存操作函数要 ...
- GeoServer配置CORS(跨域资源共享)
当前台页面请求WMS可能会遇到浏览器以下提示(浏览器控制台): 已阻止跨源请求:同源策略禁止读取位于 http://xxx.xxx.com 的远程资源.(原因:CORS 头缺少 'Access-Con ...