【问题标题】:Sending raw byte buffer post发送原始字节缓冲区帖子
【发布时间】:2024-01-23 02:34:01
【问题描述】:

我想弄清楚如何使用 curl easy 将 C++ 发送到 PHP 脚本的 POST 字段,该缓冲区可能包含 0x00 字节。 我也需要使用 HTML 压缩技术。

在此之前,我对每个字节执行sprintf("%02X"),以便我可以用字母发送它们,但现在我需要尽量减少网络流量以提高 API 响应时间。

我在 Google 上进行了尝试,但到目前为止还没有与我的问题相近的资源。 即使没有 POST 字段也不能发送它吗? 我只需要发送我的 ray BYTE[] 并从我的 PHP 脚本中获取它。

【问题讨论】:

  • 一个post字段可以接受0x00字节吗?它将终止字符串,请仔细阅读我的问题。

标签: php c++ curl libcurl


【解决方案1】:

我终于通过这种方式想出了一个 PUT 解决方案。

curl_easy_setopt(curl, CURLOPT_URL, szURL);
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
curl_easy_setopt(curl, CURLOPT_READFUNCTION, reader);
curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t)dwBinarySize);

您的 CURLOPT_READFUNCTION “阅读器”函数需要提供二进制数据,请查看 curl 的文档以获取更多信息。

这样你就可以得到你在 PHP 中发送的二进制数据了:

$fPut = fopen("php://input", "r");

$bInput;
while ($data = fread($fPut, 8192))
    $bInput .= $data;

fclose($fPut);

【讨论】:

    最近更新 更多