我嘗試使用WinGate FTP代理連接到FTP服務器。 InternetOpen()在所有情況下都成功執行返回適當的句柄。InternetConnect無法通過FTP代理連接到FTP服務器
如果代理驗證關,InternetConnect()返回正確的句柄,我可以用另外的FTP操作繼續進行,但萬一代理驗證是在,InternetConnect()返回NULL。
MSDN上,他們都提到了代理使用InternetSetOption()與INTERNET_OPTION_PROXY_USERNAME和INTERNET_OPTION_PROXY_PASSWORD標誌設置由InternetConnect返回的句柄代理用戶名和密碼,但它的返回NULL和打印GetLastError函數(),我得到以下信息:
InternetConnect失敗:12014
220 WinGate的發動機FTP網關準備
331發送密碼
530金次失敗
if ((hHandle=InternetOpen("Upload", INTERNET_OPEN_TYPE_PROXY, "ftp=ftp://<servername>:<port>", NULL, 0)) == NULL)
{
printf("InternetOpen failed: %d", GetLastError());
printInternetErrorMsg(function);
return false;
}
char buffer[1024];
string proxy_username,proxy_password;
// get ftp proxy username and password
// ..
if ((m_itConnect=InternetConnect(hHandle, ftpserver, INTERNET_DEFAULT_FTP_PORT, ftpusrname, ftppasswd, INTERNET_SERVICE_FTP, NULL, NULL)) == NULL){
printf("InternetConnect failed: %d", GetLastError());
printInternetErrorMsg(function);
//Internet Connect Fails with following error when Proxy Authentication is ON
//InternetConnect failed: 12014
//220 WinGate Engine FTP Gateway ready
//331 send password
//530 Auth Failed
return false;
}
strcpy(buffer,proxy_username.c_str());
if (!InternetSetOption (m_itConnect, INTERNET_OPTION_PROXY_USERNAME, (LPVOID) buffer, lstrlen (buffer)))
{
printf("Unable to set proxy authetication settings (username). Error returned: %d", GetLastError());
return false;
}
strcpy(buffer, proxy_password.c_str());
if (!InternetSetOption (m_itConnect, INTERNET_OPTION_PROXY_PASSWORD, (LPVOID) buffer, lstrlen (buffer)))
{
printf("Unable to set proxy authetication settings (password). Error returned: %d", GetLastError());
return false;
}
}
printf("InternetConnect successful ...");
return true;
任何幫助表示讚賞。 在此先感謝。