【问题标题】:IOS Get Proxy SettingsIOS 获取代理设置
【发布时间】:2012-09-17 07:45:15
【问题描述】:
在我的项目中,我使用 libcurl 通过 Internet 下载数据。问题是libcurl没有检测到wifi连接的代理设置。
我必须手动设置 libcurl 的设置,所以我想知道如何获取 wifi 连接的代理设置。我在 KeyChain 中找到了一些关于信息的线索,但我无法检索它们。
您知道是否有办法获取此设置以便我可以为 libcurl 设置它们?
谢谢!
【问题讨论】:
标签:
ios
proxy
settings
libcurl
【解决方案1】:
它将IP地址作为字符串。
(NSString *)proxyName
{
CFDictionaryRef dicRef = CFNetworkCopySystemProxySettings();
const CFStringRef proxyCFstr = (const CFStringRef)CFDictionaryGetValue(dicRef,
(const void*)kCFNetworkProxiesHTTPProxy);
return (__bridge NSString *)proxyCFstr;
}
【解决方案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;
}
我还没有尝试使用自动代理配置,但我希望它能正常工作!