c++ - '+' 替换为空格 Curl C++

标签 c++ curl base64 http-post

我目前正在用 C++ 处理 HTTP POST 请求,但遇到了错误。当我设置我的 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+VF1 GVRcQmYDvVoW5JHiejMjnrVNnIMpmU35y0mzywZLYn1XUL9NhFHLTAGfxsttiTmZOLY7dgCBWTPng==&mode=0。它是一些参数作为键/值对。 Data 这里是 base64 编码的。

但是当我执行 curl_perform() 时,data 的值不一样。所有的 + 都被空格替换了。所以 PHP base64_decode($_POST['data'], true); 函数返回 false

我尝试通过不同的方式来避免它在 C++ 端出现,但没有任何效果。

最佳答案

您需要正确转义您的 URL,加号会被解释为空格(请参阅 link)。

一些可能有用的链接:

请务必单独转义每个参数,否则您的 ?&= 字符(在这些位置有效)可能会也被替换了。

另请注意,curl_easy_escape 分配了一个需要由 curl_free 释放的新字符串为了避免内存泄漏。

关于c++ - '+' 替换为空格 Curl C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43757537/

相关文章:

php - 这三个选项中的哪一个可以最快填充我的数据库表?

java - 消息编码可能存在错误

ios - 编码/解码 base64 解码数据 = nil

c++ - 这些类型的指针之间有什么区别?

php - 将文件上传到 PHP 的 Curl PUT 请求

c++ - CreateProcess cmd.exe 读/写管道死锁

curl - 使用dockerfile构建镜像

encoding - 为什么 Go 在 base64 编码中使用位操作?

c++ - QuickFIX 处理修复消息的线程数

c++ - 为什么 CPP Check 没有显示任何错误?