Libcurl笔记三-创新互联

一,post请求和回报处理

创新互联公司是一家专业提供城子河企业网站建设,专注与成都网站设计、做网站H5建站、小程序制作等业务。10年已为城子河众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。
//"host/path?extra"
//strHttp="http://portal.liuhan.com:/web/getConfig?userName=liuhan01 &clientVersion=1.5.0.0";Curl    m_objUrlParser;//ATL的处理类。m_objUrlParser.CrackUrl(strHttp);

// "portal.liuhan.com" + "/web/getConfig"std::string    strUrl = std::string(m_objUrlParser.GetHostName()) + std::string(m_objUrlParser.GetUrlPath());
// "?userName=liuhan01 &clientVersion=1.5.0.0"std::string    strObject = std::string(m_objUrlParser.GetExtraInfo());
if (strObject.at(0) == '?')
{
    strObject.erase(0, 1);
}

curl_easy_setopt(m_easyHandle, CURLOPT_URL, strUrl.str());
curl_easy_setopt(m_easyHandle, CURLOPT_POST,1L);
curl_easy_setopt(m_easyHandle, CURLOPT_VERBOSE,1L);

curl_easy_setopt(m_easyHandle, CURLOPT_POSTFIELDS, strObject.c_str());
curl_easy_setopt(m_easyHandle, CURLOPT_POSTFIELDSIZE, strObject.size());

curl_easy_setopt(m_easyHandle, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(m_easyHandle, CURLOPT_WRITEDATA, pagefile);
View Code
    二,upload上传内存中的数据

网查了好久read_callback全是FILE*的处理,需要研究下。
1:CURLOPT_READFUNCTION设置后read_callback会一直被调用直到read_callback返回值为0为止;
2:第三个参数nitems表示buffer的大缓冲长度。
static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
{
    size_t retcode= fread(ptr, size, nmemb, stream);
return retcode;
}
View Code
会一直回调读取文件流stream的内容,直到读到末尾返回读取长度为0时才结束。

typedef struct UploadBuffer
{
char* pBuffs;
    unsignedint uOverallLength;
    unsignedint uCurrentPos;
} UPLOAD_BUFFER;

static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
{
    UPLOAD_BUFFER* pBuffer = (UPLOAD_BUFFER*)stream;
    size_t len= pBuffer->uOverallLength- pBuffer->uCurrentPos;
    len= len < nmemb ? len : nmemb - 1;
    memcpy_s(ptr, nmemb, pBuffer->pBuffs+ pBuffer->uCurrentPos, len);
    pBuffer->uCurrentPos += len;

return len;
}

curl_easy_setopt(m_easyHandle, CURLOPT_UPLOAD,1L);
curl_easy_setopt(m_easyHandle, CURLOPT_READFUNCTION, read_callback);
curl_easy_setopt(m_easyHandle, CURLOPT_URL, UPLOAD_URL);
curl_easy_setopt(m_easyHandle, CURLOPT_READDATA, pUpBuffer);
View Code

新闻名称:Libcurl笔记三-创新互联
标题网址:http://hxwzsj.com/article/ccgcgs.html

其他资讯

Copyright © 2025 青羊区翔捷宏鑫字牌设计制作工作室(个体工商户) All Rights Reserved 蜀ICP备2025123194号-14
友情链接: 手机网站建设 网站制作公司 企业网站设计 重庆外贸网站建设 成都定制网站建设 营销网站建设 网站建设费用 成都网站制作公司 成都网站建设 响应式网站设计方案 专业网站设计 企业网站建设 成都营销网站制作 成都网站制作 成都网站建设 移动网站建设 成都做网站建设公司 成都商城网站制作 上市集团网站建设 专业网站设计 成都网站制作 成都网站建设推广