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
- curl学习(二):获取http和https请求
- php curl请求http和https
- 用curl获取https请求
- curl 获取 https 请求方法
- 用curl获取https请求
- http 使用curl发起https请求
- http 使用curl发起https请求
- http 使用curl发起https请求
- http 使用curl发起https请求
- http 使用curl发起https请求
- http 使用curl发起https请求
- http 使用curl发起https请求
- PHP curl 模拟http https请求
- https php使用curl获取https请求的方法
- curl请求https POST和GET方法
- CURL封装的php http和https请求网页模拟post get函数
- 获取cURL请求的HTTP状态
- 用curl模拟http请求获取网页
- ERROR YarnScheduler: Lost executor
- 调试eclipse javaEE所遇问题解决
- 概率问题的求解 —— 样本空间
- TextUtils
- java.lang.UnsatisfiedLinkError: No implementation found for long com.autonavi.amap.mapcore.MapCore.n
- curl学习(二):获取http和https请求
- 一位软件工程师的7年总结
- UML建模详解(5)—类图组成构建详解
- php5.6+Redis+Windows7安装
- 最短路<dijk>
- POJ 2010 二分找中位数
- 一个APP唤醒另一个App,如果这个App没有安装,则提示未安装或立即下载
- 第16周-阅读程序(1)
- 通过宿主机目录向docker容器传文件