临时
#include <iostream>
#include <curl/curl.h>
// libcurl库下载链接:https://curl.haxx.se/download.html
// jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
//请将API地址替换为商品所提供的API地址
const static std::string request_url = "【API地址】";
static std::string classification_result;
/**
* curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
* @param 参数定义见libcurl文档
* @return 返回值定义见libcurl文档
*/
static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
// 获取到的body存放在ptr中,先将其转换为string格式
classification_result = std::string((char *) ptr, size * nmemb);
return size * nmemb;
}
/**
* @return 调用成功返回0,发生错误返回其他错误码
*/
int classification(std::string &json_result, const std::string &access_token) {
//access_token获取方法请详见API使用说明,请注意access_token有效期为30天,这里仅为了简化编码每一次请求都去获取access_token
std::string url = request_url "?access_token=" access_token;
CURL *curl = NULL;
CURLcode result_code;
int is_success;
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, url.data());
curl_easy_setopt(curl, CURLOPT_POST, 1);
curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type:application/json;charset=UTF-8");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
// image为已转换好的去头的base64编码,编码转化地址可使用https://tool.css-js.com/base64.html。返回分类数量top_num设置为5
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"image\":\"【图片base64编码】\",\"top_num\":5}");
result_code = curl_easy_perform(curl);
if (result_code != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s
", curl_easy_strerror(result_code));
is_success = 1;
return is_success;
}
json_result = classification_result;
curl_easy_cleanup(curl);
is_success = 0;
} else {
fprintf(stderr, "curl_easy_init() failed.");
is_success = 1;
}
return is_success;
}