我正试图用C++重写一个内部应用程序,但遇到了一个减速带。我的C++代码无法通过我们公司的代理访问,而C#应用程序是。我已经附上了这两个代码,所以你可以看到区别。
C++不是我的主要语言,所以我的问题是:有人知道如何让C++版本的代理知道吗?
C++:
using namespace std;
string downloader(char *url) {
IStream *stream;
HRESULT result = URLOpenBlockingStream(0, url, &stream, 0, 0);
if (result != 0) {
return "";
}
char buffer[100];
unsigned long bytesRead;
stringstream ss;
stream->Read(buffer, 100, &bytesRead);
while (bytesRead > 0U) {
ss.write(buffer, (long long)bytesRead);
stream->Read(buffer, 100, &bytesRead);
}
stream->Release();
string resultString = ss.str();
cout << resultString << endl;
return resultString;
}
以下是支持代理的C#代码:
public static void DownloadString(string address)
{
WebClient client = new WebClient();
client.Proxy = WebRequest.GetSystemWebProxy();
client.Proxy.Credentials = CredentialCache.DefaultCredentials;
string website = client.DownloadString(address);
}
WinHttpGetIEProxyConfigForCurrentUser可以为您提供internet explorer的代理配置,UrlMkSetSessionOption可以设置代理选项。
只要在谷歌上搜索你正在使用的功能,你就会很容易找到文档。