【问题标题】:C++ Sockets HTTP Post Request ProblemsC++ 套接字 HTTP Post 请求问题
【发布时间】:2014-08-11 23:44:21
【问题描述】:

我正在尝试发布请求,但遇到了一些问题。

如果我像这样输入 CPUKey 和 Hash,我可以发送请求并得到响应

GetModuleHash(XEXHASH);
CharStr2HexStr(XEXHASH, HashBuffer, 10);
if (!ServerConnect(SERVER, 80))
    return false;
DebugPrint("Connection Established");
char* Test = LinkChar("POST /projects/xenium-mw3-menu/auth.php HTTP/1.1\nHost: www.xeniummodding.com\nContent-type: application/x-www-form-urlencoded\r\nContent-length: 65\r\n\nCPUKey=%s&hash=%s\r\nConnection: close", "12121212121212121212121212121212", "00000000000000000000");
NetDll_send(XNCALLER_SYSAPP, sock, Test, strlen(Test), 0);
NetDll_recv(XNCALLER_SYSAPP, sock, ReturnBuffer, sizeof(ReturnBuffer), 0);
NetDll_closesocket(XNCALLER_SYSAPP, sock);
if (strstr(ReturnBuffer, "Auth Result: 1"))
{
    DebugPrint("Data Recieved: 1");
    return true;
}
else
{
    DebugPrint("Data Recieved: 0");
    return false;
}

char* Test = LinkChar("POST /projects/xenium-mw3-menu/auth.php HTTP/1.1\nHost: www.xeniummodding.com\nContent-type: application/x-www-form-urlencoded\r \n内容长度:65\r\n\nCPUKey=%s&hash=%s\r\n连接:关闭", "12121212121212121212121212121212", "00000000000000000000");

这行得通,但是当我实际上用 CPUKeyBuffer 和 HashBuffer 替换 121212121 和 000000 时,它不会发送数据。我不明白我做错了什么。谁能告诉我我遇到的问题?

PS LinkChar 基本上是 sprintf 但返回缓冲区并在我使用的其他所有东西上都可以正常工作

谢谢

【问题讨论】:

    标签: php html c++ sockets httprequest


    【解决方案1】:

    您对字符串分隔符不准确(在标题之间以及在起始行和第一个标题之间):\r\n 必须无处不在(根据 RFC2616 的 CR LF)。您有时使用\n,有时使用\r\n\n。没有正文的请求必须以 \r\n\r\n (最后一个标头和空字符串)结束

    【讨论】:

    • 我修复了你所说的,但即便如此,当我执行 CPUKeyBuffer 时,我也建立了连接,但需要一段时间才能打印“已接收数据:0”。我不知道。使用带有“1212121212etc”的报价 makrs 几乎可以立即得到响应,但 CPUKeyBuffer 不起作用
    • 我也不知道这是否是个问题,但 CPUKeyBuffer 是一个 char[16] 所以它:char CPUKeyBuffer[16];
    • "Connection: close" 标头必须在正文之前。并且 Content-Length 标头必须存在(或必须应用分块传输编码)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 2013-05-14
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多