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