'+'替换为空格 Curl C++
'+' replaced by spaces Curl C++
我目前正在处理C 中的HTTP POST请求,并且我遇到了一个错误。当我将帖子数据设置为
时curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postdata.c_str());
postdata.c_str()
等于:
cpp=1&data=zJBnu/hyK+xgm1tUOM22bL9h/9BVdqss7uc5uLHJ65lLHSTzQCSdgA36cz0/xb3juGGtSjm8P9m+4Ee6B6ot4IxMhuJBH5x3Co6L35tZRg7BhxTWO29UMtgitEo/OPBSiRVX/doZwlNBPm3v8ZRgjH8PT/W/VajqZYGvIvwK1cgBdrTeRCLE1nkEdQ2O0lg00VCU2amSBc4faty/RtTZYflpc+PQl9YKvsC+F09uZVKHORKfJPnIxg1SLUSuXNfzItJOR+VF1GVRcQmYDvVoW5JHiejMjnrVNnIMpmU35y0mzywZLYn1XUL9NhFHLTAGfxsttiTmZOLY7dgCBWTPng==&mode=0
。它是键/值对的一些参数。Data
这里是基本64编码。
但是当我进行curl_perform((时, data
的值不一样。所有+
都被空间所取代。因此,PHP base64_decode($_POST['data'], true);
功能返回false
。
我以不同的方式避免了C 一侧,但没有任何作用。
您需要正确逃脱URL,加上符号被解释为空格(请参阅链接(。
一些可能有帮助的链接:
- stackoverflow:编码/解码URLC
- libcurl:curl_easy_escape
请确保单独逃脱每个参数,否则您的?
,&
和=
字符(在这些位置上是有效的(可能会被替换。
还要注意,curl_easy_escape分配了一个新的字符串,需要通过curl_free释放,以避免内存泄漏。
- 在C++中使用cURL和多线程
- 如何检查cURL是否成功登录?c ++
- 带有进度表的 curl 多接口程序
- 使用 CURL 上传构建
- 使用 curl_easy_cleanup(curl) 时收到未经处理的 NULL 异常
- Curl with vcpkg
- curl 请求的用户输入
- 如何使用 curl 将 POST 请求从 python 重写为 C++
- 在 C++/C 中使用 CURL 发出带有数据文件的 GET HTTP 请求
- 如何将带有 -F 选项的 curl 命令转换为 libcurl
- 从 C++ 调用 cURL 命令会返回意外的错误代码,如 1792 和 6656
- C++:如何通过 curl 调用使用 HTTP post 请求发送二进制数据(protobuf 数据)
- C++ CURL 库链接器错误,但包含正确的库
- C++中的 cURL POST 请求
- c++curl返回413请求实体过大,但是post大小远小于max大小
- 如何在 curl 代码C++设置授权持有者标头?我得到的授权不足,即使它在命令行上工作
- c++如何使用Curl Multi-Interface连续循环
- 如何使用 c++ (curl) 发送电子邮件
- 如何使用curl c ++源代码发布wav文件数据,如何使用c ++使用--data-binary?
- G++ 无法链接 curl lib 文件