正在从cpp中的curl检索响应文本
Retrieving response text from curl in cpp
我们需要从CPP中的curl接收响应字符串,我尝试了以下选项,但没有成功。js使用xhr.responseText。我需要做cpp。
static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp)
{
size_t realsize = size * nmemb;
const char* sp = static_cast<const char*>(contents);
readBuffer.append(sp, realsize);
return realsize;
}
CURLcode res;
char* http_error= new char[100];
readBuffer.clear();
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
CURLcode code(CURLE_FAILED_INIT);
code = curl_easy_perform(curl);
cout << "Curl response msg CURLOPT_WRITEDATA: "<<curl_easy_strerror(code)<< " respose :"<<readBuffer;
res=curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code) ;
cout << "Curl response msg: "<< curl_easy_strerror(res);
将WriteCallback
函数更改为:
size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* userp) {
userp->append((char*) contents, size * nmemb);
return size * nmemb;
}
请记住,您将传入&readBuffer
作为CURL_WRITEDATA
选项。这显示为WriteCallback
中的第四个参数。由于&readBuffer
的类型是std::string*
,因此可以将其用作回调中的签名。
此外,由于它是std::string*
而不是std::string
,因此必须通过指针访问append
,因此必须使用->
而非.
。在curl_easy_perform
之后,readBuffer
应该保存来自curl请求的响应。
要获得响应代码,您可以在发出请求后获取:
long http_code;
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code);
相关文章:
- 使用VerQueryValue检索应用程序的文件描述
- 是否可以从格式字符串中检索"width"
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 当服务中的事件被触发时,如何将响应从服务发送回客户端?
- 如何在QByteArray中放置和检索位字段而不会感到痛苦?
- 如何在Qt中从数据库中检索二进制数据?
- C++ 信号和插槽不工作:插槽不响应事件
- NodeJs 服务器充斥着 UDP 广播,不发送响应
- 如何从C++代码中检索 QML 的文本字段中的文本?
- C++关于ENUM的问题。我得到的响应比枚举列表大
- 从 opencv c++ 中的矢量中检索固定的帧数
- 如何在不等待检索的情况下获取C++中的内存位置?
- 如何在 QTreeWidget 中检索特定项目的 mimeData?
- C++从字符串中检索几行
- 应用程序在打开的简历中捕获视频后没有响应
- 使用 cpprest (Casablanca) 返回 PDF 响应
- 在数据库中插入和检索矩阵
- 如何发送http请求并检索json响应C++Boost
- 正在从cpp中的curl检索响应文本
- 如何通过卡萨布兰卡检索响应头