Greless 2021-04-27 17:53 采纳率: 33.3%
浏览 69
已采纳

curl get命令行下请求正常,c++请求失败

一个http get请求的用法

curl工具命令行运行正常,请求网址返回welcome to the photoshop API

请问怎么用c++怎么实现?下面执行出来是空的,什么也没获取到,写法有没有什么问题呢

#include <iostream>
#include <curl/curl.h>
using namespace std;
/* 不考虑任何异常的情况, 简单的get请求 */
/***
 *  buffer 		接收数据所在的缓冲区
 * 	size		要读取的字节数
 *  count		读写size长度的数据count次
 *  response	用户自定义文件指针
 */
size_t getUrlResponse(char* buffer, size_t size, size_t count, string* response) {
	size_t recv_size = size * count;
	response->clear();
	response->append(buffer);
	return recv_size;
}

string get(const string& url) {
	// 请求数据
	string response;
	// easy handle声明
	CURL *handle;
	// 初始化handle
	handle = curl_easy_init();
	// 设置url
	curl_easy_setopt(handle, CURLOPT_URL, url.c_str());


	//设置curl的请求头
	struct curl_slist* header_list = NULL;
	header_list = curl_slist_append(header_list, "Authorization:Bearer eyJhbGciOiJSUzI1NiIsIng1dSI6Imltc19uYTEta2V5LTEuY2VyIn0.eyJpZCI6IjE2MTk0MzEyNTYwNjdfNWNjNzNmNTItODhkYS00NzI4LWI4MzktN2M0MjMxYzM0NDQwX3VlMSIsImNsaWVudF9pZCI6ImUyMDk2MTc3ZTEzZjRhZDg5YzliZGE0ODliNzgyNGUxIiwidXNlcl9pZCI6IjUwODc3NjgxNjA4Njg2M0EwQTQ5NUM3MUB0ZWNoYWNjdC5hZG9iZS5jb20iLCJ0eXBlIjoiYWNjZXNzX3Rva2VuIiwiYXMiOiJpbXMtbmExIiwiYWFfaWQiOiI1MDg3NzY4MTYwODY4NjNBMEE0OTVDNzFAdGVjaGFjY3QuYWRvYmUuY29tIiwiZmciOiJWTUxKUlRPNUZMTzVOSE1HU01aTFZIUUFWTT09PT09PSIsIm1vaSI6IjgzNjljMDY2IiwiZXhwaXJlc19pbiI6Ijg2NDAwMDAwIiwic2NvcGUiOiJvcGVuaWQsQWRvYmVJRCxyZWFkX29yZ2FuaXphdGlvbnMiLCJjcmVhdGVkX2F0IjoiMTYxOTQzMTI1NjA2NyJ9.Fve8x2oBauAFWcAjTnhhlBXVQ3V5wvLjb-sgSFdohueXMCtOd8rsWkPeRX6QwYfJXah3j8v5raIG2mCS0yIqP7YAOero5Cx2D0jIaysd0dZmZfS3mxA9VgkISzP2L7uSicHc2es3i5zBCoztcn-4v15qUHOFWd2X1AKF5xadiRVwJG8IQaiJots6BoX9jxIt4PjZN8DkuSDK9HtkOMYwhoc0C8fXonAGUMt3IE7bFLI7kj7MlexhR-y8maa2Cx_THxtSmkp2BdLKeYRI9TQ5YEY6tUgPTKqcNG_JNAriCWCuKhPsBXrdmWZkBqKniuepNHIcJo0_W_L-k4kGF290kA");
	header_list = curl_slist_append(header_list, "x-api-key:e2096177e13f4ad89c9bda489b7824e1");
	curl_easy_setopt(handle, CURLOPT_HTTPHEADER, header_list);
	
	//curl_easy_setopt(handle, CURLOPT_HTTPGET, NULL);
	
	// 注册回调函数
	curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, &getUrlResponse);
	 
	// 获取信息
	curl_easy_setopt(handle, CURLOPT_WRITEDATA, &response);
	// 执行请求
	curl_easy_perform(handle);
	// 释放
	curl_easy_cleanup(handle);

	return response;
}
int main() {
	// 使用前初始化libcurl, 只需初始化一次
	curl_global_init(CURL_GLOBAL_DEFAULT);
	// 执行请求
	cout << get("https://image.adobe.io/pie/psdService/hello");
	// 释放libcurl相关资源
	curl_global_cleanup();
	return 0;
}
  • 写回答

1条回答 默认 最新

  • 胖哥王老师 单片机领域新星创作者 2021-04-28 09:19
    关注

            if (0 == strncmp(url, "https:", 6))
            {
                curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
                curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false);
            }

    如果是https,需要添加这些配置,最简单的就是不验证证书

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 收益高的广告联盟有哪些
  • ¥15 Android Studio webview 的使用问题, 播放器横屏全屏
  • ¥15 删掉jdk后重新下载,Java web所需要的eclipse无法使用
  • ¥15 uniapp正式环境中通过webapi将本地数据推送到设备出现的跨域问题
  • ¥15 xui建立节点,显示错误
  • ¥15 关于#单片机#的问题:开始、复位、十进制的功能可以实现,但是切换八进制的功能无法实现(按下按键也没有效果),把初始状态调成八进制,也是八进制可以实现但是切换到十进制不行(相关搜索:汇编语言|计数器)
  • ¥15 VINS-Mono或Fusion中feature_manager中estimated_depth是特征的深度还是逆深度?
  • ¥15 谷歌浏览器如何备份抖音网页数据
  • ¥15 分别有什么商家下面需要非常多的骑手为它工作?
  • ¥15 开机logo到Qt应用起来会黑屏将近两秒时间