首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在iOS中从PAC文件中获取代理信息

如何在iOS中从PAC文件中获取代理信息
EN

Stack Overflow用户
提问于 2013-07-13 15:21:41
回答 1查看 1.4K关注 0票数 2

我在我的应用程序中使用代理支持,它适用于在wifi设置面板中输入的手动代理,但当我们在HTTP proxy部分的"Auto“选项中为该特定Wifi连接输入自动代理pac文件时,它就不适用了。

这些信息不包含在PAC文件中,因此是动态的,那么如何让我的iOS应用程序使用pac文件来获取代理信息?

EN

回答 1

Stack Overflow用户

发布于 2018-07-23 03:52:01

如果您使用的是Objective C,则可以参考以下代码片段来获取代理的详细信息(使用kCFNetworkProxiesProxyAutoConfigURLString):

代码语言:javascript
复制
 CFDictionaryRef dicRef = CFNetworkCopySystemProxySettings();
//Manual Proxy Details
const NSString* proxyStr = (const NSString*)CFDictionaryGetValue(dicRef, (const void*)kCFNetworkProxiesHTTPProxy);

//Auto Config Proxy Details
NSString* proxyStr2 = ( NSString*)CFDictionaryGetValue(dicRef, (const void*)kCFNetworkProxiesProxyAutoConfigURLString);
// Return something similar to http://someIPAddress:someport/pacfile

if (proxyStr2 != nil)
{
    NSLog(@"Proxy %@", proxyStr2);
    // Create an url with the proxy pac
    NSURL *url = [NSURL URLWithString:proxyStr2];
    if (url != nil)
    {
        NSString* urlPath = [url path];
        // Url path: /pacfile
        NSLog(@"Url %@", urlPath);
        NSError* error;

        // Go fetch the content the url (PAC Content)
        NSString *content = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:&error];

        if (content == nil)
        {
            NSLog(@"StringWithContentsOfUrl Error: %@", error);
        }

        if (content != nil)
        {
            NSLog(@"PAC content: %@", content);

            // Parsing of the pac file. This is just a sample parsing script and may change based on what your PAC returns
            NSUInteger firstMatch = [content rangeOfString:@"PROXY "].location + 6;
            NSUInteger secondMatch = [content rangeOfString:@"\"" options:0 range:NSMakeRange(firstMatch , [content length] - firstMatch)].location;

            if (firstMatch < 10000 && secondMatch < 10000 && firstMatch > 0 && secondMatch > 0)
            {
               //Just a random label
                self.randLabel3.text=[NSString stringWithFormat: @"First match and second match: %tu %tu", firstMatch, secondMatch];

            }
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17627966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档