2012-11-07 12 views
5

Tôi nhận thấy rằng ứng dụng của tôi không sử dụng cài đặt proxy có sẵn cho máy (Tôi đang sử dụng Charles proxy để kiểm tra cấu hình proxy). Một phần của ứng dụng thực hiện cuộc gọi sử dụng NSURLConnection sử dụng chính xác và đưa ra yêu cầu sử dụng proxy, phần còn lại của ứng dụng (đó là một ứng dụng MonoMac, chạy trên Mono, rõ ràng) không.Mac OSX - làm cách nào tôi có thể lấy cấu hình proxy bằng Cocoa hoặc thậm chí cả hàm C thuần túy?

Nó tiếp tục đưa ra yêu cầu như thể không có cấu hình proxy nào. Có một chức năng hoặc đối tượng tôi có thể sử dụng để lấy cùng cấu hình proxy NSURLConnection đang sử dụng không?

+0

Hãy kiểm tra liên kết sau đây cũng: http://stackoverflow.com/questions/4379156/retrieve-pac-script-using-wpad-on-osx Kính trọng, Anand Choubey –

Trả lời

9

Chức năng cung cấp cho bạn tất cả các thông tin proxy được SCDynamicStoreCopyProxies(), nó có thể được gọi như trong ví dụ dưới đây (khi bạn đã hoàn tất, bạn cũng phải CFRelease tất cả các đối tượng này, vì chúng ta đều từ CF và không trực tiếp đối tượng Cocoa):

#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; 
} 

và kết quả sẽ là một cái gì đó như:

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

không hoạt động từ iOS8 – passol

1

Các Proxies điển trong khuôn khổ SystemConfiguration sẽ chứa thông tin này

+0

Và làm thế nào để lập trình truy cập này thông tin? Tôi không thể chỉ đọc tập tin cấu hình vì nó có thể được cập nhật và tôi phải biết nó đã được cập nhật và tôi cũng không thể tải tệp từ đường dẫn vì nó có thể thay đổi đường dẫn trong tương lai. –

Các vấn đề liên quan