【发布时间】: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 中。