IOS 获取代理设置

Posted

技术标签:

【中文标题】IOS 获取代理设置【英文标题】:IOS Get Proxy Settings 【发布时间】:2012-09-17 07:45:15 【问题描述】:

在我的项目中,我使用 libcurl 通过 Internet 下载数据。问题是libcurl没有检测到wifi连接的代理设置。

我必须手动设置 libcurl 的设置,所以我想知道如何获取 wifi 连接的代理设置。我在 KeyChain 中找到了一些关于信息的线索,但我无法检索它们。

您知道是否有办法获取此设置以便我可以为 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;

我还没有尝试使用自动代理配置,但我希望它能正常工作!

【讨论】:

以上是关于IOS 获取代理设置的主要内容,如果未能解决你的问题,请参考以下文章

如何使用公司代理为 iOS 模拟器设置 Charles 代理

在 iOS CFStreams 上设置代理不起作用

以编程方式在 iOS 设置中设置全局 Http 代理的可能方法是啥?

如何获取 KDE 代理设置

设置网站代理

UIBarButtonItem 外观代理设置字体属性在 iOS 11 中不起作用