私のプロジェクトでは、libcurlを使用してインターネット経由でデータをダウンロードしています。問題は、libcurlがwifi接続のプロキシ設定を検出しないことです。
libcurlの設定を手動で設定する必要があるので、wifi接続のプロキシ設定を取得するにはどうすればよいのでしょうか。KeyChainの情報に関する手がかりをいくつか見つけましたが、それらを取得できませんでした。
この設定を取得してlibcurlに設定できるようにする方法があるかどうか知っていますか?
ありがとう !
応答が見つかりました!
このコードを使用するとうまくいくようです:
std::string getProxyName()
{
CFDictionaryRef dicRef = CFNetworkCopySystemProxySettings();
const CFStringRef proxyCFstr = (const CFStringRef)CFDictionaryGetValue(dicRef, (const void*)kCFNetworkProxiesHTTPProxy);
char buffer[4096];
memset(buffer, 0, 4096);
if (CFStringGetCString(proxyCFstr, buffer, 4096, kCFStringEncodingUTF8))
{
return std::string(buffer);
}
return "";
}
int CDownloadThread::getProxyPort()
{
CFDictionaryRef dicRef = CFNetworkCopySystemProxySettings();
const CFNumberRef portCFnum = (const CFNumberRef)CFDictionaryGetValue(dicRef, (const void*)kCFNetworkProxiesHTTPPort);
SInt32 port;
if (CFNumberGetValue(portCFnum, kCFNumberSInt32Type, &port))
{
return port;
}
return -1;
}
自動プロキシ設定はまだ試していませんが、機能することを願っています。
それは文字列としてIPアドレスを与えます。
(NSString *)proxyName
{
CFDictionaryRef dicRef = CFNetworkCopySystemProxySettings();
const CFStringRef proxyCFstr = (const CFStringRef)CFDictionaryGetValue(dicRef,
(const void*)kCFNetworkProxiesHTTPProxy);
return (__bridge NSString *)proxyCFstr;
}