你有沒有用WINHTTP_OPTION_PROXY標誌試過WinHttpSetOption?它看起來大致是這樣的:
hSession = WinHttpOpen(L"WinHTTP Example/1.0",
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
WINHTTP_NO_PROXY_NAME,
WINHTTP_NO_PROXY_BYPASS, 0);
WINHTTP_PROXY_INFO proxy = { 0 };
proxy.dwAccessType = WINHTTP_ACCESS_TYPE_NAMED_PROXY;
proxy.lpszProxy = L"http://127.0.0.1:1234;http://blarg.com:4545";
if (!WinHttpSetOption(hSession, WINHTTP_OPTION_PROXY, &proxy, sizeof(proxy)))
{
wprintf(L"Unable to set proxy.\n");
}
else
{
HINTERNET hRequest = WinHttpOpenRequest(hConnect, L"GET", NULL, NULL,
WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, WINHTTP_FLAG_SECURE);
char* username = "username";
WinHttpSetOption(hRequest, WINHTTP_OPTION_PROXY_USERNAME, username, strlen(username));
WinHttpSetOption(hRequest, WINHTTP_OPTION_PROXY_PASSWORD, password, strlen(password));
[ ... ]
}
上面將設置您使用兩個代理... 127.0.0.1:1234,並blarg.com:4545會話。如果需要,您也可以使用https更改方案。它將使用WINHTTP_OPTION_PROXY_USERNAME和WINHTTP_OPTION_PROXY_PASSWORD選項爲代理用戶名和密碼設置參數。
請注意我已經執行了幾乎沒有錯誤檢查。通常,你會希望確保選擇很正確設置等
謝謝你的回答。我只想堅持知道代理的IP和端口的事實。但是,也許這不是WinHttp的工作方式...... –
我已經擴展了我的原始問題,即您是否嘗試過使用WinHttpSetOption爲會話設置代理,以使其更有幫助。 我試了一下剛纔,它似乎工作(雖然我實際上沒有一個合法的代理...所以我的測試涉及看到後,我設置的選項我無法訪問網站)。 – fleebness
雖然我不知道什麼你到底是「合法的代理」的意思是,我不認爲我有一個或者: 我安裝了Squid代理在我的局域網的機器(P)中的一個。運行WinHttp代碼的機器是LAN中的另一臺機器(C)。 遠程機器是(S)。我需要(C)向(S)發送一個HTTP請求,但是請求必須發送給代理(P),代理將把它發送給(S)。 –