【发布时间】:2019-06-13 12:02:17
【问题描述】:
我尝试使用 GET 参数接收一些数据。 当我尝试从网络地址获取数据时,它工作正常。 只是我将网络服务器更改为 localhost 我将无法接收数据并得到 ERROR 12175
我需要改变什么,我的代码适用于网络连接和本地主机测试?
当我在浏览器中输入本地主机地址时,我会收到预期的结果。
LPCWSTR server = L"www.airfieldmanager-game.de"; //this works fine
//LPCWSTR server = L"localhost"; //causes Error 12175 at WinHttpSendRequest. Variables hSession, hConnect and cRequest looks fine.
LPCWSTR serverRequest = L"/php/TestCURL.php?data=1¶m=Gesendete Daten!";
// Use WinHttpOpen to obtain a session handle.
hSession = WinHttpOpen(L"WinHTTP Example/1.0",
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
WINHTTP_NO_PROXY_NAME,
WINHTTP_NO_PROXY_BYPASS, 0);
// Specify an HTTP server.
if (hSession)
hConnect = WinHttpConnect(hSession, server,
INTERNET_DEFAULT_HTTP_PORT, 0);
// Create an HTTP request handle.
if (hConnect)
hRequest = WinHttpOpenRequest(hConnect, L"GET", serverRequest,
NULL, WINHTTP_NO_REFERER,
WINHTTP_DEFAULT_ACCEPT_TYPES,
WINHTTP_FLAG_SECURE);
// Send a request.
if (hRequest)
bResults = WinHttpSendRequest(hRequest,
WINHTTP_NO_ADDITIONAL_HEADERS, 0,
WINHTTP_NO_REQUEST_DATA, 0,
0, 0);
// End the request.
if (bResults)
bResults = WinHttpReceiveResponse(hRequest, NULL);
if (!bResults)
{
int i = GetLastError(); //when using loscalhost i becomes 12175
}
【问题讨论】:
-
什么证书使用你的本地服务器?它是否包含 localhost ?
-
我认为你需要
WinHttpSetOption和WINHTTP_OPTION_SECURITY_FLAGS来设置SECURITY_FLAG_IGNORE_CERT_CN_INVALID | SECURITY_FLAG_IGNORE_UNKNOWN_CA -
我为 localhost 使用标准安装的 XAMPP。所以我认为不会安装证书。现在我尝试在 WinHttpOpen 之后直接添加一个 WinHttpSetOption //设置安全标志 DWORD dwSecOption = SECURITY_FLAG_IGNORE_CERT_CN_INVALID | SECURITY_FLAG_IGNORE_UNKNOWN_CA; int itmp = WinHttpSetOption(hSession, WINHTTP_OPTION_SECURITY_FLAGS, &dwSecOption, sizeof(dwSecOption));
-
为什么你在这种情况下使用
WINHTTP_FLAG_SECURE? -
谢谢,就是这样!用 0 删除了 WINHTTP_FLAG_SECURE,现在它适用于本地主机和网站。非常感谢。如何将您的答案标记为解决方案?