7

私のプロジェクトでは、libcurlを使用してインターネット経由でデータをダウンロードしています。問題は、libcurlがwifi接続のプロキシ設定を検出しないことです。

libcurlの設定を手動で設定する必要があるので、wifi接続のプロキシ設定を取得するにはどうすればよいのでしょうか。KeyChainの情報に関する手がかりをいくつか見つけましたが、それらを取得できませんでした。

この設定を取得してlibcurlに設定できるようにする方法があるかどうか知っていますか?

ありがとう !

4

2 に答える 2

7

応答が見つかりました!

このコードを使用するとうまくいくようです:

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;
}

自動プロキシ設定はまだ試していませんが、機能することを願っています。

于 2012-09-26T08:00:25.490 に答える
0

それは文字列としてIPアドレスを与えます。

(NSString *)proxyName 
{

    CFDictionaryRef dicRef = CFNetworkCopySystemProxySettings();

    const CFStringRef proxyCFstr = (const CFStringRef)CFDictionaryGetValue(dicRef,
                                   (const void*)kCFNetworkProxiesHTTPProxy);

    return  (__bridge NSString *)proxyCFstr;

}
于 2015-01-28T07:18:45.640 に答える