【问题标题】:HttpSendRequest not posting correctHttpSendRequest 未正确发布
【发布时间】:2014-08-01 13:39:39
【问题描述】:

我正在使用 WinInet 向 apache Web 服务器发出一个简单的 POST 请求。我使用 base 64 对数据进行编码。问题是,每个 + 字符都会被空格字符替换。

为什么会这样,我怎样才能发出正确的 POST 请求。

hInternet = InternetOpen(NULL, INTERNETOPENTYPEPRECONFIG, NULL, NULL, 0);
if (hInternet)
{
    hConnect = InternetConnect(hInternet, szDomain, INTERNETDEFAULTHTTPPORT, NULL, NULL, INTERNETSERVICEHTTP, 0, dwTmp);
    if (hConnect)
    {
        hRequest = HttpOpenRequest(hConnect, szPost, szExfiltrationURL, NULL, NULL,(char *)accept, INTERNETFLAGNOCACHEWRITE | INTERNETFLAGNOCOOKIES | INTERNETFLAGNOUI | INTERNETFLAGRELOAD, 0);
        if (hRequest)
        {
            HttpSendRequest(hRequest, headers, lstrlen(headers), buffer, buflen);
            InternetCloseHandle(hRequest);
        }

        InternetCloseHandle(hConnect);
    }

    InternetCloseHandle(hInternet);
}

【问题讨论】:

  • 你为什么首先将数据编码为base64? POST 正文可以包含未编码的二进制数据。在POST 请求中,您的数据应该在正文中,而不是在 URL 中。

标签: c++ winapi wininet


【解决方案1】:

从 W3 开始

"在查询字符串中,加号保留为简写形式 空格符号:

来源:“http://www.w3.org/Addressing/URL/4_URI_Recommentations.html

【讨论】:

猜你喜欢
  • 2016-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 2011-07-21
  • 2012-06-26
  • 1970-01-01
  • 2020-06-23
相关资源
最近更新 更多