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;
}
:获取http和https请求&spm=1001.2101.3001.5002&articleId=51659855&d=1&t=3&u=57383daa00374081a326031981095dc9)
4040

被折叠的 条评论
为什么被折叠?



