2012-11-07 31 views
5

मैंने देखा है कि मेरा ऐप मशीन के लिए उपलब्ध प्रॉक्सी सेटिंग्स का उपयोग नहीं करता है (मैं प्रॉक्सी कॉन्फ़िगरेशन का परीक्षण करने के लिए Charles proxy का उपयोग कर रहा हूं)। NSURLConnection का उपयोग करके कॉल करने वाले ऐप का एक टुकड़ा सही ढंग से उपयोग करता है और प्रॉक्सी का उपयोग करके अनुरोध करता है, ऐप का दूसरा टुकड़ा (जो एक मोनोमैक ऐप है, जो मोनो पर चल रहा है) स्पष्ट रूप से नहीं है।मैक ओएसएक्स - मैं कोको या यहां तक ​​कि शुद्ध सी कार्यों का उपयोग कर प्रॉक्सी कॉन्फ़िगरेशन कैसे प्राप्त कर सकता हूं?

यह अनुरोध करता रहता है जैसे कोई प्रॉक्सी कॉन्फ़िगर नहीं किया गया है। क्या कोई फ़ंक्शन या ऑब्जेक्ट है जिसका उपयोग मैं उसी प्रॉक्सी कॉन्फ़िगरेशन को पकड़ने के लिए कर सकता हूं NSURLConnection का उपयोग कर रहा है?

+0

लिंक का पालन भी की जाँच करें: http://stackoverflow.com/questions/4379156/retrieve-pac-script-using-wpad-on-osx सादर, आनंद चौबे –

उत्तर

9

समारोह है कि आप सभी प्रॉक्सी जानकारी SCDynamicStoreCopyProxies(), यह नीचे दिए गए उदाहरण में के रूप में कहा जा सकता है है देता होते हैं (संपन्न कर लिए जाने आप भी CFRelease करने के लिए है इन वस्तुओं के सभी, क्योंकि वे सभी सीएफ से और नहीं सीधे कोको वस्तुओं) कर रहे हैं:

#import <Foundation/Foundation.h> 
#import <SystemConfiguration/SystemConfiguration.h> 

int main(int argc, const char * argv[]) 
{ 

    @autoreleasepool { 

    CFDictionaryRef proxies = SCDynamicStoreCopyProxies(NULL); 

    CFIndex count = CFDictionaryGetCount(proxies); 

    NSLog(@"Number of keys is %ld", count); 

    NSDictionary * proxyConfiguration = (NSDictionary*) proxies; 

    for (id key in proxyConfiguration.keyEnumerator) { 
     NSLog(@"Pair is %@ -> %@", key, [proxyConfiguration valueForKey: key]); 
    } 

    } 
    return 0; 
} 

और उत्पादन होगा कुछ की तरह:

2012-11-07 16:33:57.844 network-test[6501:403] Number of keys is 12 
2012-11-07 16:33:57.847 network-test[6501:403] Pair is HTTPEnable -> 1 
2012-11-07 16:33:57.848 network-test[6501:403] Pair is HTTPSProxy -> 127.0.0.1 
2012-11-07 16:33:57.848 network-test[6501:403] Pair is ExceptionsList -> (
    "www.google.com" 
) 
2012-11-07 16:33:57.849 network-test[6501:403] Pair is HTTPSPort -> 8888 
2012-11-07 16:33:57.850 network-test[6501:403] Pair is __SCOPED__ -> { 
    en1 =  { 
     ExceptionsList =   (
      "www.google.com" 
     ); 
     FTPPassive = 1; 
     HTTPEnable = 1; 
     HTTPPort = 8888; 
     HTTPProxy = "127.0.0.1"; 
     HTTPSEnable = 1; 
     HTTPSPort = 8888; 
     HTTPSProxy = "127.0.0.1"; 
     SOCKSEnable = 1; 
     SOCKSPort = 8889; 
     SOCKSProxy = "127.0.0.1"; 
    }; 
} 
2012-11-07 16:33:57.850 network-test[6501:403] Pair is HTTPProxy -> 127.0.0.1 
2012-11-07 16:33:57.851 network-test[6501:403] Pair is SOCKSPort -> 8889 
2012-11-07 16:33:57.852 network-test[6501:403] Pair is SOCKSProxy -> 127.0.0.1 
2012-11-07 16:33:57.852 network-test[6501:403] Pair is HTTPSEnable -> 1 
2012-11-07 16:33:57.853 network-test[6501:403] Pair is SOCKSEnable -> 1 
2012-11-07 16:33:57.853 network-test[6501:403] Pair is HTTPPort -> 8888 
2012-11-07 16:33:57.854 network-test[6501:403] Pair is FTPPassive -> 1 
+0

आईओएस 8 से काम नहीं करते हैं – passol

1

SystemConfiguration ढांचे में Proxies शब्दकोश इस जानकारी

+0

और कैसे मैं प्रोग्राम के रूप में इस का उपयोग करते हैं जानकारी? मैं केवल कॉन्फ़िगरेशन फ़ाइल को पढ़ नहीं सकता क्योंकि इसे अपडेट किया जा सकता है और मुझे यह जानना होगा कि यह अपडेट किया गया था और मैं पथ से फ़ाइल को भी लोड नहीं कर सकता, क्योंकि यह भविष्य में इसका मार्ग बदल सकता है। –