我正在使用 C++ 发送带有二进制信息的后请求。代码如下所示:
int binary[4] = { 1, 2, 3, 4 };
std::stringstream out;
out << "POST /address HTTP/1.1\r\n";
out << "Host: localhost\r\n";
out << "Connection: Keep-Alive\r\n";
out << "Content-Type: application/octet-stream\r\n";
out << "Content-Transfer-Encoding: binary\r\n";
out << "Content-Length: " << 4*sizeof(int) << "\r\n\r\n"; // 4 elements of integer type
并将数据发送到套接字中打开的连接中:
std::string headers = out.str();
socket.send(headers.c_str(), headers.size()); // Send headers first
socket.send(reinterpret_cast<char*>(&binary[0]), bufferLength*sizeof(int)); // And array of numbers
但有人告诉我,通过 http-protocol 发送纯字节是错误的。是对的吗?例如,我不能发送 0 ( zero
),它是由协议使用的。
如果那是正确的(因为我无法处理该后请求并获取我发送的数据)我可以使用什么来代替?也许,将数组转换为十六进制或 base64url?
谢谢。