curl库实现get及post请求

#pragma once
#include <map>
#include <string>

class CHttpHelp
{
public:
    CHttpHelp(void);
    ~CHttpHelp(void);

    static void InitCURL();
    static void CleanupCURL();

    std::string get_value(std::string url, int timeOut = 500);      //默认10毫秒

    std::string post_value(std::string url, std::string szpara,int timeout = 500);

    void SetReqReceive(std::string str);

private:
    std::string     m_Res;
    std::string     m_strUrl; 
};

#include "StdAfx.h"
#include "curl/curl.h"
#include "HttpHelp.h"

CHttpHelp::CHttpHelp(void)
{
}

CHttpHelp::~CHttpHelp(void)
{
}

void CHttpHelp::InitCURL()
{
    curl_global_init(CURL_GLOBAL_ALL);
}

void CHttpHelp::CleanupCURL()
{
    curl_global_cleanup();
}

size_t CHttpHelp_OnHttpReqReceive(void *buffer, size_t size, size_t nmemb, void*userp)
{
    std::string tempRes = (char *) buffer;
    tempRes = tempRes.substr(0, nmemb);
    CHttpHelp * hander = (CHttpHelp *)userp;
    hander->SetReqReceive(tempRes); 
    return size * nmemb;
}

void CHttpHelp::SetReqReceive(std::string str)
{
    m_Res = m_Res + str;
}

std::string CHttpHelp::get_value(std::string url, int timeOut)
{   
    m_Res = ""; 

    CURL *curl;
    CURLcode curl_code;
    curl = curl_easy_init();
    if ( !curl ) {
        return m_Res;
    }

    curl_easy_setopt( curl, CURLOPT_URL, url.c_str());   
    curl_easy_setopt( curl,  CURLOPT_WRITEDATA, (void*)this);
    curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeOut);    
    curl_code = curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, CHttpHelp_OnHttpReqReceive);
    curl_code = curl_easy_perform( curl );
    if (curl_code != CURLE_OK)
    {

    }
    curl_easy_cleanup(curl);
    return m_Res;
}

std::string CHttpHelp::post_value(std::string url,std::string szpara, int timeout)
{
    m_Res = "";

    CURL *curl;
    CURLcode curl_code;
    curl = curl_easy_init();
    if (!curl) {
        return m_Res;
    }

    curl_easy_setopt(curl, CURLOPT_POST, 1); // post req  
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, szpara.c_str());
    curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)this);
    curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout);
    curl_code = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, CHttpHelp_OnHttpReqReceive);

    curl_code = curl_easy_perform(curl);
    if (curl_code != CURLE_OK)
    {

    }
    curl_easy_cleanup(curl);

    return m_Res;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值