C++ libcurl PATCH 请求无法通过 .str.c_str() 进行字符串流转换

标签 c++ json curl format libcurl

我正在通过 C++ libcurl 库发送补丁请求,当我将“有效负载”硬编码到我的程序中时,它可以 100% 正常工作,但是,我希望它被传入,所以我使用 stringstream 来创建它。当我用 stringstream 发送它时,服务器响应 400 Bad request 而当我手动输入它时,程序运行没有错误

这是我硬编码后它的外观(和工作方式)

curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"region\":\"us-central\"}");

这就是我用 stringstream 格式化它的方式(由于某些原因它不起作用

stringstream payload;
payload << "{\"region\":\"";
payload << c_codes[i];
payload << "\"}";

CURLOPT_POSTFIELDS 中,我将其称为 payload.str().c_str()

最佳答案

问题是@Igor Tandetnik描述,但我只想发布一个替代解决方案:

你可以使用CURLOPT_COPYPOSTFIELDS而不是 CURLOPT_POSTFIELDS,那么 payload.str().c_str() 会是安全的,因为 curl 会为您制作一个字符串的拷贝,并且字符串的生命周期不再是您的责任,它是 curl 的。

关于C++ libcurl PATCH 请求无法通过 .str.c_str() 进行字符串流转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55987765/

相关文章:

Python 请求库不适用于 Flask 应用程序自己的路由

c++ - 检查用户是本地帐户还是域帐户

python - Flask 中的 POST 请求和 Content-Type "application/json"无响应

c++ - 在 vim 中查找 c++ 文档

mysql - 将 JSON 数据存储在 MySQL 表中

json - 在 Flutter 中从 JSON 创建列表

javascript - 通过curl获取数据时在新标签页(Javascript)中打开PDF

javascript - 使用 Javascript 下载 HTTP 文件

c++ - 为什么 ptr_fun(tolower) 不能在 mingw 中编译?

c++ - 将现有 C 项目转换为 WPF