curl学习(二):获取http和https请求

来源:互联网 发布:知乎添加剂的危害 编辑:程序博客网 时间:2024/05/16 09:17

curl获取http和https请求

HTTP

#include <stdio.h>#include <string.h>#include <curl/curl.h>char recv_buffer[10240] = {0};size_t recv_buffer_len;#define MIN(x,y) ((x)<(y)?(x):(y))static size_t fun_callback(void *buffer, size_t size, size_t block, void *f_user){    unsigned length;    unsigned int r_left_len = 0;    unsigned copy_len = 0;    length = size * block;    if(length == 0){        return 0;    }    r_left_len = sizeof(recv_buffer) - recv_buffer_len -1;    copy_len = MIN(length, r_left_len);    memcpy(recv_buffer + recv_buffer_len, buffer, copy_len);    recv_buffer_len += copy_len;    return length;} static size_t get_http_req(void){    CURL *curl = NULL;    CURLcode res;    const char *url = "http://xxxxxx";    memset(recv_buffer, 0, sizeof(recv_buffer));    recv_buffer_len = 0;    curl = curl_easy_init();    if(!curl){        return 0;    }    curl_easy_setopt(curl, CURLOPT_URL, url);    curl_easy_setopt(curl, CURLOPT_TIMEOUT, 3);    curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &fun_callback);    res = curl_easy_perform(curl);    if(res == CURLE_OK){        printf("--->%s<---\n",recv_buffer);    }    curl_easy_cleanup(curl);    return 0;}int main(void){    get_http_req();    return 0;}

HTTPS
区别就是在设置curl属性时,加入下面两句代码

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);  // 从证书中检查SSL加密算法是否存在或者curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 跳过证书检查  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);  // 从证书中检查SSL加密算法是否存在
#include <stdio.h>#include <string.h>#include <curl/curl.h>char recv_buffer[10240] = {0};size_t recv_buffer_len;#define MIN(x,y) ((x)<(y)?(x):(y))static size_t fun_callback(void *buffer, size_t size, size_t block, void *f_user){    unsigned length;    unsigned int r_left_len = 0;    unsigned copy_len = 0;    length = size * block;    if(length == 0){        return 0;    }    r_left_len = sizeof(recv_buffer) - recv_buffer_len -1;    copy_len = MIN(length, r_left_len);    memcpy(recv_buffer + recv_buffer_len, buffer, copy_len);    recv_buffer_len += copy_len;    return length;} static size_t get_https_req(void){    CURL *curl = NULL;    CURLcode res;    const char *url = "https://xxxxxx";    memset(recv_buffer, 0, sizeof(recv_buffer));    recv_buffer_len = 0;    curl = curl_easy_init();    if(!curl){        return 0;    }    curl_easy_setopt(curl, CURLOPT_URL, url);    curl_easy_setopt(curl, CURLOPT_TIMEOUT, 3);    curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 跳过证书检查      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);  // 从证书中检查SSL加密算法是否存在    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &fun_callback);    res = curl_easy_perform(curl);    if(res == CURLE_OK){        printf("--->%s<---\n",recv_buffer);    }    curl_easy_cleanup(curl);    return 0;}int main(void){    get_https_req();    return 0;}
1 0