IOS Получить настройки прокси

В моем проекте я использую libcurl для загрузки данных через Интернет. Проблема в том, что libcurl не определяет настройки прокси-соединения для Wi-Fi.

Я должен вручную установить настройки для libcurl, поэтому мне интересно, как можно получить настройки прокси-соединения Wi-Fi. Я нашел некоторые подсказки об информации в KeyChain, но мне не удалось их получить.

Знаете ли вы, есть ли способ получить эти настройки, чтобы я мог установить их для libcurl?

Спасибо!

2 ответа

Я нашел ответ!

Использование этого фрагмента кода работает:

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;

}
Другие вопросы по тегам