【问题标题】: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;
      }
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        • 2012-02-07
        • 2012-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-29
        相关资源
        最近更新 更多